我已經在多個地方閱讀了最終方法是早期綁定但沒有提供令人滿意的理由。我懷疑即使在父類引用的最後一個方法中,它也不能如此,因此編譯器不能說是否調用了父類的非final或child的最終方法。
請指教。在最終方法中的早期綁定
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();
}
}
在上面的代碼方法甲基()稱爲兒童(父參考)是一種最終方法,但那麼JVM應該需要使用一個方法查找表在運行時作爲在其孩子或父方法被調用。
如果該方法是最終的,那麼JVM就不需要在運行時使用方法查找表,所以它很有意義,因爲它很早就綁定了。 –
你的問題是什麼?此代碼按照您的預期輸出「孩子父母」,不是嗎? – Eric