【发布时间】:2019-02-26 23:35:06
【问题描述】:
我真的不明白为什么下面的代码不起作用。我希望B.f 被打印出来。
public class Main {
public static void main(String[] args) {
B b = new B();
b.g();
}
}
class A {
void g() {
f(); /* or this.f() */
}
}
class B extends A {
void f() {
System.out.println("B.f");
}
}
编译器抱怨:
Main.java:13: error: cannot find symbol
f(); /* or this.f() */
^
symbol: method f()
location: class A
1 error
据我了解,A.g 中的this 的动态类型始终为B。这样一来,Java的动态方法查找应该可以为this.f找到B.f,然后执行。
【问题讨论】:
标签: java class methods dynamic this