<分区>
我在教科书中读到,标记为私有(private)的类成员不会被继承。
所以我想如果类 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,我很困惑,因为它看起来像带有 ref b
的对象现在有变量 length
并且它的值为 32。但是 ref b
指的是从 B
类创建的对象,其中未定义 length
变量。
那么真相是什么,类B
是否继承了private
变量length
?如果是这样,private
变量不被继承是什么意思?