比如:
父类 A
public class A {
private int x;
public void setX(int x)
{
this.x = x;
}
public int getX()
{
return this.x;
}
}
子类B继承A后 (public class B extends A),自己不存在x这个成员变量,但是外界却可以通过调用B.setX()和B.getX()访问到A的x变量。请问这样一来在运行时B这个实例b是否存在x这个变量,即实际上内存中只存在一个实例b,b有一个不可见的变量x?还是说内存中同时存在不可见的一个父类A的实例a和可见的子类B的实例b,然后调用b.setX()的时候会修改a.x的值?
那是因为父类中的私有变量在父类中被方法调用了,当子类执行的时候回默认执行父类中的构造方法,所以是可以的,举例:
父类
public class A {
private int x =5;
public void setX(int x) { this.x = x; }
public int getX() { return this.x; }
}
子类
public class B extends A { }
这个时候如果通过“B.getX();”输出的结果就是:5;