【发布时间】:2017-05-06 19:43:39
【问题描述】:
我已经提出了这个问题:
public class A {
private void a() {
System.out.println("a");
}
public static void main(String[] args) {
A t = new B();
t.a();
}
}
class B extends A {
public void a() {
System.out.println("b");
}
}
这会打印输出:a
我不太确定答案。 我知道如果您创建一个子对象并将其传递给父引用。它运行仅通过 A 覆盖的功能。 但是这里的函数是私有的,这是怎么工作的???
我知道这不是压倒一切的。但是输出怎么会打印“a”呢?
【问题讨论】:
-
您不能覆盖
private方法。 -
a()是 A 上的私有函数,不会被继承。 -
私有方法不被继承
-
你在这里并没有真正覆盖
a(),因为它是私有的,你的B对象将无法调用它。 -
我并不是说它压倒一切。我是说因为它没有压倒一切,为什么它打印“a”
标签: java inheritance