我真的不明白为什么下面的代码不起作用。我希望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
根据我的理解,thisin的动态类型A.g始终是B. 其结果是,Java的动态方法查找应该能够找到B.f的this.f,然后执行它。
幕布斯7119047
大话西游666
相关分类