क्या कोई मुझे बता सकता है कि protected
/public
इनर कक्षाओं के बीच क्या अंतर है?संरक्षित/सार्वजनिक आंतरिक कक्षाएं
मुझे पता है कि public
आंतरिक कक्षाएं जितनी ज्यादा हो सके से बचने के लिए हैं (जैसा कि article में बताया गया है)।
लेकिन जो मैं कह सकता हूं, उससे protected
या public
संशोधक के बीच कोई अंतर नहीं है।
इस उदाहरण पर एक नज़र डालें:
public class Foo1 {
public Foo1() { }
protected class InnerFoo {
public InnerFoo() {
super();
}
}
}
...
public class Foo2 extends Foo1 {
public Foo2() {
Foo1.InnerFoo innerFoo = new Foo1.InnerFoo();
}
}
...
public class Bar {
public Bar() {
Foo1 foo1 = new Foo1();
Foo1.InnerFoo innerFoo1 = foo1.new InnerFoo();
Foo2 foo2 = new Foo2();
Foo2.InnerFoo innerFoo2 = foo2.new InnerFoo();
}
}
यह सब संकलित करता है तथा मान्य है मैं घोषणा कि क्या InnerFoo
protected
या public
।
मुझे क्या याद आ रही है? कृपया मुझे एक ऐसे मामले को इंगित करें जहां protected
या public
का उपयोग करने में कोई अंतर है।
धन्यवाद।
ठीक है। मैं अपना भ्रम देखता हूं। क्योंकि आंतरिक वर्ग संलग्न वर्ग के सदस्यों की तरह हैं, मैं संरक्षित सदस्यों के संदर्भ में सोच रहा था। धन्यवाद। –
@bruno conde: संरक्षित वर्ग * * संरक्षित सदस्यों की तरह हैं। –
दूसरे शब्दों में, जावा में "संरक्षित", चाहे सदस्यों या आंतरिक कक्षाओं पर लागू हो, सी ++ और सी # से अलग है। यह एक ही पैकेज (नामस्थान) में अन्य कक्षाओं तक पहुंच प्रदान करता है। – Qwertie