This question already has answers here:
Do subclasses inherit private fields?
(19 个回答)
6年前关闭。
我在一本教科书中读到,标记为私有(private)的类成员不会被继承。
所以我想如果
但是,以下示例表明我误解了:
结果是 32,我很困惑,因为它看起来像带有 ref
那么真相是什么,类
(19 个回答)
6年前关闭。
我在一本教科书中读到,标记为私有(private)的类成员不会被继承。
所以我想如果
A
类有一个 private
变量 x
并且 B
类会扩展 A
类,那么 x
类中将没有变量 B
。但是,以下示例表明我误解了:
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
变量没有被继承是什么意思? 最佳答案
private
字段隐藏在 B
中。但是,您的 public
方法是继承的并且是可访问的,并且它们可以访问私有(private)字段。
关于java - 私有(private)成员和继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27092107/