- 在影像部分 1 中,中間類ClassA繼承了ClassASuper,但沒有覆寫Display方法,而是在子子類ClassB 中覆寫它,并且它似乎按預期作業。
- 在影像部分 2 中,中間類ClassA繼承了ClassASuper并覆寫了Display方法,該方法在子子類ClassB 中也進一步被覆寫,并且它似乎也按預期作業。
- 在Image section 3 中,中間類ClassA繼承了ClassASuper并隱藏了Display方法,該方法在子子ClassB 中進一步被覆寫,似乎是矛盾的。-->有人可以解釋一下這是如何在幕后作業的嗎?

uj5u.com熱心網友回復:
在 Section3 中,新Display方法隱藏了從基類繼承的方法。它是新的繼承層次結構的起點。在這方面,它與具有另一個名稱的全新方法沒有任何區別。你可以這樣寫:
public virtual void NewDisplay()
{
...
}
并在ClassA和 中覆寫這個ClassB。
因此,型別變數ClassASuper看不到這個新方法,因為它沒有覆寫或實作原始方法。由于ClassASuper.Display未被覆寫,它確實正確顯示
從 ClassASuper 列印
如果要使用新方法,則必須強制轉換為ClassA(或ClassB):
((ClassA)classASuperA).Display();
((ClassA)classASuperB).Display();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/351263.html
