我在多个地方读到最终方法是早期绑定的,但没有一个提供令人满意的理由。我怀疑即使在父类引用上调用的最终方法中,它怎么可能如此coz,编译器无法说明是调用父类的非最终方法还是子类的最终方法。
请指教。
class Parent {
void meth() {
System.out.println("parent");
}
}
class Child extends Parent {
@Override
final void meth() {
// TODO Auto-generated method stub
System.out.println("child");
}
public static void main(String[] args) {
Parent parent = new Parent();
Parent child = new Child();
child.meth();
parent.meth();
}
}
在上面的代码中,调用子方法(父引用)的方法 meth() 是最终方法,但是 JVM 应该需要在运行时使用方法查找表,就像调用的子方法或父方法一样。