Java Interfaces

Interface — Complete Deep
Revision Guide

Pure contract hai — kya karna hai batata hai, kaise karna hai nahi. Java 7 → 8 → 9 sab covered!

📌 Topic 1: Basic Interface 📌 Topic 2: Java 8 — Default & Static 📌 Topic 3: Java 9 — Private Methods 📌 Topic 4: Nested Interface

🔷 Interface Kya Hai?

Interface ek pure contract hai jo sirf batata hai kya karna hai, kaise karna hai nahi. Java 8 se pehle 100% abstraction tha, ab default/static methods bhi aa gaye. Interface ka object DIRECTLY nahi ban sakta — implementing class ka object banao.

Variables

Automatically public static final — change nahi ho sakti!

Methods

Automatically public abstract — implement karna COMPULSORY

Java 8+

default aur static methods — body ke saath allowed

Java 9+

private aur private static methods — sirf andar use

📌

Topic 1: Basic Interface

Interface ka basic use — implement karo, sab abstract methods override karo

Java 7+

Key Rules — Topic 1

Variables automatically public static final — interface name se access: Animal.type
Methods automatically public abstract — implementing class ko sab override karne COMPULSORY
Interface reference variable — ek hi ref se alag alag objects hold karo (Runtime Polymorphism)
Class multiple interfaces implement kar sakti hai — implements A, B, C
Interface, interface ko extend kar sakti hai — interface B extends A
P 1.1

BasicInterface.java — Simple Interface

Kya seekhenge: Sabse basic interface example. Animal interface mein sound() aur eat() abstract methods hain. Dog class dono implement karti hai. Animal.type — static final variable ko interface name se access karo, object se nahi. Agar Dog class koi bhi method implement na kare → Compile Error!
P 1.2

InterfaceReference.java — Interface Reference Variable

Kya seekhenge: Shape s ek interface reference hai. s = new Circle(5) → Circle ka area call hoga. s = new Rectangle(4,6) → Rectangle ka area call hoga. Ek hi reference se alag alag objects! Yahi Runtime Polymorphism hai — compile time pe nahi pata kaun sa method chalega, run time pe decide hota hai.
P 1.3

MultipleInterface.java — Multiple Interface Implementation

Kya seekhenge: Duck implements Flyable, Swimmable — ek class DO interfaces implement kar sakti hai! Java mein class multiple extend nahi kar sakti, lekin multiple interfaces implement kar sakti hai — yahi Diamond Problem ka solution hai. Flyable f = new Duck() → interface reference.
P 1.4

InterfaceExtends.java — Interface extends Interface

Kya seekhenge: ElectricVehicle extends Vehicle — interface dusri interface ko extend kar sakti hai! Tesla implements ElectricVehicle → Tesla ko dono interfaces ke methods implement karne padenge — start() (Vehicle se) aur charge() (ElectricVehicle se). Vehicle v = new Tesla() → parent interface reference.
P 1.5

InterfaceBank.java — Interface Real World (Bank System)

Kya seekhenge: Real-world example! BankAccount interface — deposit(), withdraw(), getBalance() define karta hai. SavingsAccount aur CurrentAccount dono implement karte hain apne hisaab se. Interface reference array se sab accounts loop mein handle! Yahi interface ka asli fayda hai — ek type, alag alag behaviour.
📌

Topic 2: Java 8 — Default & Static Methods

Purani classes break na ho isliye default methods aaye — body ke saath!

Java 8+

Key Rules — Topic 2

default method → body hoti hai, implementing class override kare ya na kare — optional!
static method → body hoti hai, sirf interface name se callInterfaceName.method(). Object ya implementing class se access nahi!
Agar do interfaces mein same default method → implementing class mein override COMPULSORY. A.super.show() se explicitly choose kar sakte ho.
P 2.1

DefaultMethod.java — Default Method Basic

Kya seekhenge: Greeting interface mein sayBye() default method hai — body ke saath. EnglishGreeting ne override nahi kiya → default version chalega. HindiGreeting ne override kiya → apna version chalega. Problem tha: agar interface mein new method add karo toh saari classes mein override karna padta. Default method se purani classes break nahi hoti!
P 2.2

StaticMethod.java — Static Method in Interface

Kya seekhenge: MathOperation.square(5) — static method ko sirf interface name se call karo. Addition class static method inherit nahi karti! Object se call nahi ho sakta. static void info() — interface level information ke liye. Object ki zaroorat hi nahi!
P 2.3

DefaultConflict.java — Default Method Conflict (Diamond Problem)

Kya seekhenge: Interface A aur B dono mein show() default method hai. C implements A, B → CONFLICT! Compiler nahi jaanta kaunsa use kare. Solution: C mein override COMPULSORY! A.super.show() se explicitly A ka version call kar sakte ho.
P 2.4

DefaultVsOverride.java — Default Method Override Comparison

Kya seekhenge: 3 classes ek interface implement karti hain — BasicLogger default use karta hai, PrefixLogger override karta hai, SilentLogger apna version deta hai. Default method = optional override! Har class apni zaroorat ke hisaab se decide kar sakti hai.
P 2.5

StaticUtility.java — Static Methods as Utility (Real World)

Kya seekhenge: Interface ke static methods ko utility functions ki tarah use karo — StringUtils.isEmpty(), StringUtils.capitalize(). Koi object nahi chahiye! Java mein java.util.Comparator jaisi classes isi pattern ka use karti hain. Static methods = helper functions in interface.
📌

Topic 3: Java 9 — Private Methods

Default methods mein duplicate code tha — private methods se common logic ek jagah!

Java 9+

Key Rules — Topic 3

private method → sirf interface ke andar use ho sakta hai. Implementing class ko dikhta bhi nahi!
private static method → static methods ke common logic ke liye — interface name se bhi call nahi ho sakta!
Fayda: Default methods mein duplicate code hatao — common logic ek private method mein daalo
P 3.1

PrivateMethod.java — Private Method in Interface

Kya seekhenge: private void log() — sirf interface ke andar use hota hai. logInfo() aur logError() dono default methods is private method ko call karte hain — duplicate code nahi! AppLogger class ko private method dikhta hi nahi. Run karke dekho — sirf default methods accessible hain.
P 3.2

PrivateStaticMethod.java — Private Static Method

Kya seekhenge: private static boolean isNotEmpty() — static methods ka common helper. validateName() aur validateEmail() dono is private static method ko call karte hain. Interface name se bhi call nahi kar sakte — truly private! Form validation ka real-world pattern.
P 3.3

PrivateHelperDemo.java — Private Method Code Reuse Pattern

Kya seekhenge: private void addBorder() aur private void addTimestamp() — common formatting helpers. Multiple default methods inhe reuse karte hain. Java 9 se pehle: ek hi code kahin kahin duplicate karna padta tha! Private method se DRY principle follow hota hai — Don't Repeat Yourself.
P 3.4

AllMethodTypes.java — Sab Method Types Ek Saath

Kya seekhenge: Sabse important program! Ek interface mein abstract + default + static + private + private static — 5 types ek saath! Kaun kahan se accessible hai yeh clearly dikhta hai. Exam aur interview mein zaroor aata hai — private sirf andar, static sirf interface name se, default object se.
📌

Topic 4: Nested Interface

Class ya interface ke andar interface — large-scale design pattern (jaise Java ka Map.Entry)

Java 7+

Key Rules — Topic 4

Class ke andar interface → automatically public static hota hai
Access karo: Outer.NestedInterface — outer class name dot interface name
Interface ke andar interface → automatically public static — outer interface name se access
Real example: Java ka Map.Entry ek nested interface hai!
P 4.1

NestedInterface.java — Interface inside Class

Kya seekhenge: Outer.Printable — class ke andar interface. Document implements Outer.Printable. Reference type banate waqt: Outer.Printable p = new Document(). Kab use karte hain? Jab interface sirf us class se related ho — encapsulation ke liye. Example: List.ListIterator.
P 4.2

InterfaceInsideInterface.java — Interface inside Interface (Map.Entry style)

Kya seekhenge: Database.Query — interface ke andar interface. MySQLQuery implements Database.Query. Yahi Java ka Map.Entry pattern hai! Database aur Query closely related hain — isliye nested. Real-world design pattern!
P 4.3

FinalRevision.java — Full Combined Example (Sab topics ek saath)

Kya seekhenge: SABSE IMPORTANT PROGRAM! Payment interface mein — static final variable, abstract method, default method (Java 8), static method (Java 8), private method (Java 9), nested interface (Topic 4). UPIPayment dono — Payment aur Payment.Refund implement karta hai. Interview mein yahi poochha jaata hai!
P 4.4

NestedRealWorld.java — Nested Interface Real World (UI Builder)

Kya seekhenge: UIComponent.ClickListener — jaise Android ya Swing mein button click handle karte hain! Button class UIComponent implement karta hai. Button.ClickListener — event handler. Ye pattern asal Android programming mein bhi use hota hai! Nested interface = closely related functionality ek saath.

🗂️ Quick Revision Table

Feature Version Keyword Inherited by class? How to call
Abstract method Java 7 abstract (optional) ✅ Must override Object se
Default method Java 8 default ✅ Auto milta hai Object se (override optional)
Static method Java 8 static ❌ Inherit nahi InterfaceName.method()
Private method Java 9 private ❌ Sirf interface andar Sirf default methods andar
Private static Java 9 private static ❌ Sirf interface andar Sirf static methods andar
Nested interface Java 7 ✅ Implement kar sakte hain Outer.InnerInterface

⚠️ Common Errors & Fix

ErrorReasonFix
Cannot instantiate interface new Interface() kiya Implementing class ka object banao
must override method Interface method implement nahi kiya Saare abstract methods override karo
Duplicate default method Do interface same default method Class mein override karo, A.super.method() use karo
Java 9 features compile error Old Java version javac --release 9 ya Java 9+ use karo
static method not accessible Object se static call kiya InterfaceName.staticMethod() use karo
private method not accessible Class se private call kiya Private sirf interface andar — class se nahi!

⭐ Interview Questions

Interface aur Abstract class mein kya fark hai?
Interface = pure contract (100% abstract, Java 8 se default/static), state nahi rakh sakta (no instance variables). Abstract class = partial implementation, instance variables rakh sakti hai, constructor hota hai. Class ek se zyada interface implement kar sakti hai, ek se zyada abstract class extend nahi kar sakti.
Interface ka variable change kyun nahi hota?
Interface ke variables automatically public static final hote hain — compile time constant! final hone ki wajah se value change nahi ho sakti. Isliye Animal.type = "xyz" → Compile Error!
Default method kyun aaya Java 8 mein?
Backward compatibility ke liye! Agar Java 8 mein Collection interface mein stream() method add karna tha toh saari implementing classes (ArrayList, LinkedList etc.) mein override karna padta — lakho classes toot jaati. Default method se existing classes break nahi hoti.
Static method interface mein override kyun nahi hota?
Static methods class se nahi, interface se belong karte hain — they are not part of the object. Isliye inheritance mein participate nahi karte. InterfaceName.method() se hi access — object se nahi, implementing class se nahi!
Private method Java 9 mein kyun add kiya?
Code reuse aur encapsulation ke liye! Default methods mein common logic duplicate hoti thi. Private method se common logic ek jagah — aur implementing class ko dikhta bhi nahi. DRY principle — Don't Repeat Yourself.
Nested interface ka real-world example kya hai?
java.util.Map.Entry — Java ka sabse famous nested interface! Map ke andar ek key-value pair ko represent karta hai. Map.Entry<K,V> entry — outer interface Map, inner interface Entry. Android mein View.OnClickListener bhi nested interface hai!