Pure contract hai — kya karna hai batata hai, kaise karna hai nahi. Java 7 → 8 → 9 sab covered!
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.
Automatically
Automatically
Interface ka basic use — implement karo, sab abstract methods override karo
Purani classes break na ho isliye default methods aaye — body ke saath!
Default methods mein duplicate code tha — private methods se common logic ek jagah!
Class ya interface ke andar interface — large-scale design pattern (jaise Java ka Map.Entry)
| 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 |
| Error | Reason | Fix |
|---|---|---|
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! |