Мне было интересно, есть ли в Java функция языка, в которой методы суперкласса были бы невидимы для членов подкласса:
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){...}
}
Если вы хотите создать подкласс A, защищая некоторые из его методов, и вы не можете изменять модификаторы доступа в методах, если не переопределите их, вы получите что-то вроде этого:
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){...}
}
Либо так, либо вы можете сохранить частный экземпляр A и получить что-то вроде этого:
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){...}
}
Можете ли вы иметь что-то такое, что не требует переопределения каких-либо методов?