我有以下類別:哪些Java方法將被調用(繼承,沒有@Override)
Class X
{
void f() { ... }
}
Class Y extends X
{
void f() {....}
}
Class Z extends Y
{
// No void f() method declared here
}
的Z
原因Y.f()
的對象上調用f()
執行。我期望X.f()
將被執行,因爲Y.f()
沒有@Override
註釋。
我的問題:最具體的方法是否會被執行,或者是什麼原因導致這種行爲?
謝謝!
Java中的所有可繼承的實例方法都是虛擬的。重寫是唯一的選擇。 –