class Mom{
public String sex(){
return "Female"。
}
}
class Son extends Mom{
@Override
public String sex(){
return "Male"。
}
Mom mom=new Son();
現在為什么mom.sex()回傳 "Male",它不應該回傳 "Female"。我很困惑。
因為根據我的想法,它在子類邏輯中被覆寫了。在這種情況下,它不應該像父類邏輯那樣行事嗎?
uj5u.com熱心網友回復:
當你運行Mom obj = new John();時,那么你已經創建了一個新的John實體。John也可以作為Mom使用,因為那是它的超類,但是當你呼叫它的方法時,它們仍然是在你的John實體上呼叫的,在你的例子中,你已經多載了sex方法,它的原始實作在Mom中。
uj5u.com熱心網友回復:
一旦你在子類中覆寫了這個方法,子類的實作將比父類獲得更高的優先權。這就是Override的作業方式。如果你洗掉了覆寫的實作,那么父類即Mom的實作將被觸發。
記住,=的左邊顯示了物件的型別,而=的右邊則代表了具體的實作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/313392.html
標籤:
上一篇:一次更新所有Excel公式
