這是一個奇怪的措詞問題,所以我很抱歉,如果它是重複的。使用重寫的子類方法的超類方法
說我有一類foo
與方法a
調用方法b
:
public class foo
{
public void a()
{
b();
}
public void b()
{
gamma();
}
}
現在我有一個擴展foo
public class bar extends foo
{
@Override
public void b()
{
theta();
}
}
如果我叫bar.a()
一個子類bar
,將a
使用來自超類的b
方法還是來自子類的b
方法?也就是說,bar.b()
最終會執行gamma
還是最終會執行theta
?
詢問沒有問題,但是由於您已經編寫了代碼,您可以通過記錄或直接將其寫入控制檯來自行檢查。我總是樂於做這樣的實驗,以確定會發生什麼 - 這種方式有時候可以找到新的方法來做某些事情,而這些事情你現在可能並沒有縮進,但是稍後你會發現已經做到了。你有時可能會重新發明輪子,但是有好奇心,並且自己做所有的小事情你不僅僅是得到答案 – Wolfii 2013-03-09 20:47:26