4 types: Member Inner · Static Inner · Local Inner · Anonymous — sab explained with 4–5 programs each!
Ek class ke andar doosri class likhna = Inner Class. Ye concept Security, Modularity, aur Outer class ke private members access karne ke liye use hota hai.
Kyun use karte hain? Security — Inner class bahar se directly access nahi hoti. Modularity — Related code ek jagah. Outer class ke
Method ke andar declare. Sirf us method mein use. Method ke effectively final variables access.
Naam nahi hota. On-the-spot implementation. Sirf ek baar use. Interface/Abstract class ke liye.
Outer class ke andar, non-static — Outer ke private members bhi access kar sakta hai
Outer ka object nahi chahiye — directly banao! Sirf static members access
Method ke andar class — sirf us method mein exist karti hai!
Naam nahi, on-the-spot implement karo — sirf ek baar use!
| Type | Keyword | Object Banana | Outer Access | Kab Use |
|---|---|---|---|---|
| 🔴 Member Inner | - | outer.new Inner() | Sab members (private bhi!) | Outer ke private data chahiye |
| 🔵 Static Inner | static | new Outer.Inner() | Sirf static members | Outer object se independent ho |
| 🟢 Local Inner | - | Method ke andar only | Outer + method vars | Sirf ek method ke liye logic |
| 🟠 Anonymous | - | new Interface/Class(){} | Effectively final vars | Ek baar ka on-the-spot implementation |
| Rule | Detail |
|---|---|
| Inner → Outer | Outer ke private members bhi milte hain (Member Inner mein) |
| Outer → Inner | Directly nahi milte, object chahiye |
| Static Inner | Outer ka object nahi chahiye — new Outer.Inner() |
| Anonymous | Naam nahi hota, ek baar kaam — new Type(){...} |
| .class files | Compiler Outer$Inner.class banata hai (Member/Static ke liye) |
| Local Inner access | Method ke effectively final variables access kar sakti hai |
🧩 Inner Classes in Java — Complete Deep Revision Guide
Order mein run karo: P1 → P2 → P3 → P4 → P5 | Har program ek naya concept add karta hai! 🎯