【发布时间】:2010-10-18 23:01:00
【问题描述】:
我想知道 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 的某些方法的同时继承 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){...}
}
你能有一些东西以一种你不必重新声明任何方法的方式来接受吗?
【问题讨论】:
标签: java oop class inheritance