学习java的继承时,肯定都会遇到一个问题,父类的私有成员变量子类能继承吗,父类的成员变量,子类是怎么继承的?
我们知道,java在进行类的实例化时,会优先实例化父类,,直到当前类没有父类。
那么我们使用一小段代码测试一下。
public class Test extends TestFather{
public static void main(String[] args) throws Exception {
Test test = new Test();
System.out.println(test.bear);
test.change();
System.out.println(test.bear);
}
public void change(){
super.bear = "333";
}
}
class TestFather {
private String apple="apple";
public String bear="beer";
}
这段代码输出的结果是
我们改变了父类的成员变量,访问子类的这个属性时,发现也变了,这已经可以说明,子类继承父类其实是拥有了父类这个对象,使用VN图或许就能直观的显示了。
是不是感觉一目了然,子类其实是能拥有父类的一切东西的,只是私有变量无法访问的到而已,我们操作子类继承来的属性时,其实都是在操作父类的属性。
因此,别再说子类只能继承非私有属性和方法了,他拥有的是一个完整的父类啊