我在一本教科书中读到,被标记为私有的类成员是不会被继承的。
因此,我认为如果类A
有一个private
变量x
,并且类B
扩展了类A
,那么类B
中就没有变量x
。
然而,下面的例子表明我误解了这一点:
public class testdrive
{
public static void main(String[] args) {
B b = new B();
b.setLength(32);
System.out.print(b.getLength());
}
}
class A {
private int length;
public void setLength(int len) {
length = len;
}
public int getLength() {
return length;
}
}
class B extends A {
public void dummy() {
}
}
结果是32,我感到困惑,因为它看起来像引用b的对象现在具有变量
length
和其值为32。但是引用b指的是从类创建的对象,其中未定义length
变量。
那么真相是什么?类是否继承了私有变量length
?如果是这样,那么“私有”变量不被继承意味着什么?
java
标记了您的问题。 - Pshemo