जावा में इनर क्लास (inner class) और स्टैटिक नेस्टेड क्लास (static nested class) में क्या अंतर है?
नमस्ते साथियों! मैंने अभी Java सीखना शुरू किया है और नेस्टेड क्लासेज़ के विषय पर आया हूँ। मैं विभिन्न स्रोत पढ़ रहा हूँ, लेकिन inner class (आंतरिक क्लास) और static nested class (स्टैटिक नेस्टेड क्लास) के बीच स्पष्ट अंतर नहीं समझ पा रहा हूँ। दोनों को दूसरी क्लास के अंदर घोषित किया जाता है, लेकिन वे अलग-अलग व्यवहार करते हैं।
उदाहरण के लिए, मेरे पास यह कोड है:
```java
public class Outer {
private String message = "Hello from Outer";
class Inner {
public void print() {
System.out.println(message);
}
}
static class StaticNested {
public void print() {
// यहाँ मैं सीधे message तक नहीं पहुँच सकता
// System.out.println(message); // कंपाइलेशन एरर
}
}
}
```
प्रश्न:
1. Inner message फ़ील्ड तक क्यों पहुँच सकता है, जबकि StaticNested नहीं? दोनों Outer के अंदर हैं।
2. इन क्लासेज़ के इंस्टेंस सही तरीके से कैसे बनाएँ? मैंने `new Outer().new Inner()` आज़माया — यह काम करता है, लेकिन यह अजीब लगता है।