【发布时间】:2014-07-06 08:57:13
【问题描述】:
考虑以下类:
public class A {
public void foo() {
System.out.println("A.foo()");
}
public void bar() {
System.out.println("A.bar()");
foo();
}
}
public class B extends A {
public void foo() {
System.out.println("B.foo()");
}
public static void main(String[]
args) {
A a = new B();
a.bar();
}
}
这段代码的输出是A.bar(),然后是B.foo()。我注意到,如果我将方法 foo() 的访问级别从 public 更改为 private,则输出为:A.bar(),然后是 A.foo()。
为什么?
【问题讨论】:
-
因为
private方法没有被继承。
标签: java oop inheritance dynamic-dispatch