Java में इनर क्लास (inner class) और स्टैटिक नेस्टेड क्लास (static nested class) में क्या अंतर है?
सभी को नमस्ते! मैंने Java सीखना शुरू किया है और नेस्टेड क्लासेज़ के विषय में उलझन में हूँ। मैंने Oracle की डॉक्यूमेंटेशन पढ़ी, लेकिन वह बहुत शुष्क है। दो प्रकार हैं: inner class (आंतरिक क्लास) और static nested class (स्टैटिक नेस्टेड क्लास)। मैंने एक छोटा उदाहरण लिखा है, लेकिन समझ नहीं आ रहा कि कोड अलग-अलग क्यों काम करता है।
यह रहा मेरा कोड:
```java
public class OuterClass {
private String outerField = "बाहरी फ़ील्ड";
// आंतरिक क्लास
class InnerClass {
void display() {
System.out.println("Inner: " + outerField);
}
}
// स्टैटिक नेस्टेड क्लास
static class StaticNestedClass {
void display() {
// त्रुटि! outerField दिखाई नहीं देता
// System.out.println("StaticNested: " + outerField);
}
}
}
```
प्रश्न:
1. `StaticNestedClass` बाहरी क्लास का इंस्टेंस बनाए बिना `outerField` तक क्यों नहीं पहुँच सकता, जबकि `InnerClass` पहुँच सकता है?
2. नेस्टेड क्लास के लिए `static` का उपयोग कब करना चाहिए और कब नहीं?