मैं सोच रहा था कि जावा में एक भाषा सुविधा है जिसमें सुपरक्लास के तरीकों के लिए सुपरक्लास के तरीके अदृश्य होंगे:जावा में संरक्षित वर्ग संरचना?
public class Subclass extends protected Superclass
या कुछ। मैं एक उदाहरण दूंगा।
यहां आपका सुपरक्लास है।
public class A{
public String getA(){...}
public String getB(){...}
public String getC(){...}
public void setA(String a){...}
public void setB(String b){...}
public void setC(String c){...}
}
यदि आप अपनी कुछ विधियों की रक्षा करते समय ए को उप-वर्ग करना चाहते हैं, और आप विधियों में एक्सेस संशोधकों को तब तक नहीं बदल सकते जब तक कि आप उन्हें ओवरराइड न करें, आप इस तरह कुछ खत्म कर देंगे-
public class B extends A{
private String getA(){return super.getA();}
private String getB(){return super.getB();}//These four methods have
private void setA(String a){super.setA(a);}//to be redeclared.
private void setB(String b){super.setB(b);}
public String getC(){return super.getC();}//These two methods can be
public void setC(String c){super.setC(c);}//removed.
public String getD(){...}
public void setD(String d){...}
}
या तो आप या आप का एक निजी उदाहरण रख सकते हैं और इस तरह कुछ है:
public class B{
private A obj;
private String getA(){return obj.getA();}
private String getB(){return obj.getB();}//These four methods can also
private void setA(String a){obj.setA(a);}//be removed.
private void setB(String b){obj.setB(b);}
public String getC(){return obj.getC();}//These two methods are
public void setC(String c){obj.setC(c);}//redeclared.
public String getD(){...}
public void setD(String d){...}
}
क्या आपके पास ऐसा कुछ ऐसा हो सकता है जो आपको किसी भी तरीके से फिर से शुरू करने की आवश्यकता न हो?
+1 सी ++ (जो संरक्षित और निजी विरासत है) के साथ तुलना के लिए +1। –
जब मैं उन्नत सी ++ सिखाता था, तो मैं सबटाइपिंग संबंध दिखाने के लिए वेन आरेख तैयार करता था, और उप-वर्गों के अंदर और बाहर क्या देखा जाता है, यह अवधारणा को प्रदर्शित करने के लिए बहुत प्रभावी पाया गया। हालांकि, मुझे लगा कि अक्सर यह लायक होने की तुलना में अधिक परेशानी थी। – Uri