我读到子类不能继承私有(private)字段或方法。然而,在这个例子中
class SuperClass {
private int n=3;
int getN() {
return n;
}
}
class SubClass extends SuperClass {
public static void main(String[] args) {
SubClass e = new SubClass();
System.out.println("n= " + e.getN());
}
}
当我运行 main
时,我得到的输出为 n=3
。这似乎 SubClass
从 SuperClass
继承了私有(private)属性 n
。
那么,请解释一下这里发生了什么。谢谢。
最佳答案
子类“拥有”其父类(super class)的字段,但不能直接访问它们。同样,子类“具有”私有(private)方法,但您不能直接从子类调用或覆盖它们。
在Java documentation on inheritance , 它说
A subclass does not inherit the private members of its parent class.
但是,我发现将其视为更有用
A subclass inherits the private members of its parent class but does not have access to them
但这归结为语义。
关于java - 私有(private)字段是否被子类继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8152574/