我读过一个子类不能继承私有字段或方法。但是,在这个例子中
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是n从继承了private属性SuperClass。
main
n=3
SubClass
n
SuperClass
所以,请解释这里发生了什么。谢谢。
子类具有其超类的字段,但不能直接访问它们。同样,子类“具有”私有方法,但是您不能直接从子类中调用或重写它们。
在有关继承的Java文档中,它说
子类并 没有 继承父类的私有成员。
但是,我认为将其视为
子类继承其父类的私有成员,但无权访问它们
但这归结为语义学。