Mi chiedevo se c'è una caratteristica del linguaggio Java in cui i metodi di una superclasse sarebbero invisibili per i membri di una sottoclasse:Struttura di classe protetta in Java?
public class Subclass extends protected Superclass
o qualcosa del genere. Darò un esempio.
Ecco la tua superclasse.
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){...}
}
Se si desidera creare una sottoclasse A, proteggendo alcuni dei suoi metodi, e non è possibile cambiare modifyers accesso a metodi meno che vengano modificate, che ci si finisce con qualcosa come questo-
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){...}
}
uno che o è possibile mantenere un'istanza privata di a e avere qualcosa di simile:
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){...}
}
si può avere qualcosa che richiede sia in un modo che non si dispone di alcun metodo ridichiarare?
+1 per il confronto con C++ (che ha un'eredità protetta e privata). –
Quando insegnavo C++ avanzato, disegnavo diagrammi di Venn per mostrare le relazioni di sottotitoli e mostrare ciò che si vede all'interno e all'esterno delle sottoclassi, trovavo molto efficace dimostrare il concetto. Tuttavia, sentivo che spesso erano più problemi di quanti ne valesse la pena. – Uri