एक क्लास जो एक क्लास के अंदर घोषित की जाती है लेकिन मेथड के बाहर होती है, उसे मेंबर इनर क्लास के रूप में जाना जाता है।
हम मेंबर इनर क्लास को दो तरीकों से इंस्टेंशिएट कर सकते हैं:
- क्लास के भीतर इनवोक किया गया
- क्लास के बाहर इनवोक किया गया
इनर क्लास के नियम
- आउटर क्लास (वह क्लास जिसमें इनर क्लास होती है) अपने कोड के अंदर जितनी चाहे उतनी इनर क्लास ऑब्जेक्ट्स इंस्टेंशिएट कर सकती है।
- यदि इनर क्लास पब्लिक है और कंटेनिंग क्लास भी है, तो किसी अन्य अनरिलेटेड क्लास में कोड भी इनर क्लास का इंस्टेंस बना सकता है।
- कोई इनर क्लास ऑब्जेक्ट्स आउटर क्लास ऑब्जेक्ट के साथ ऑटोमेटिकली इंस्टेंशिएट नहीं होते।
- यदि इनर क्लास static है, तो static इनर क्लास को आउटर क्लास इंस्टेंस के बिना इंस्टेंशिएट किया जा सकता है। अन्यथा, इनर क्लास ऑब्जेक्ट को आउटर क्लास के इंस्टेंस के साथ एसोसिएट होना चाहिए।
- आउटर क्लास इनर क्लास के प्राइवेट मेथड्स को भी कॉल कर सकती है।
क्लास के अंदर इनवोक की गई मेंबर इनर क्लास
नीचे दिए गए उदाहरण में, हम OuterClass के display() मेथड से मेंबर इनर क्लास के मेथड को इनवोक कर रहे हैं।
उदाहरण
public class OuterClass {
private int value = 20;
class InnerClass {
void show() {
System.out.println("Value is: " + value);
}
}
void display() {
InnerClass ic = new InnerClass();
ic.show();
}
public static void main(String args[]){
OuterClass oc = new OuterClass();
oc.display();
}
}
Value is: 20
क्लास के बाहर इनवोक की गई मेंबर इनर क्लास
नीचे दिए गए उदाहरण में, हम Test क्लास से यानी OuterClass के बाहर InnerClass के show() मेथड को इनवोक कर रहे हैं।
उदाहरण
class OuterClass {
private int value = 20;
class InnerClass {
void show() {
System.out.println("Value is: "+ value);
}
}
}
public class Test {
public static void main(String args[]) {
OuterClass obj = new OuterClass();
OuterClass.InnerClass in = obj.new InnerClass();
in.show();
}
}
आउटपुट
Value is: 20