| 關鍵字 | 繼承鏈語義 |
|---|---|
virtual | 允許子類同名方法與其建立繼承鏈(開放鏈尾) |
override | 與父類同名方法建立繼承鏈,隱式virtual(延續鏈) |
new | 切斷與父類同名方法的繼承鏈(新鏈頭) |
sealed | 延續鏈並封閉(不可再被子類override),必須配合override |
無關鍵字時默認new語義(隱藏父類同名方法),編譯器給出警告建議顯式new。
override/sealed的定義 → 鏈頭(新鏈開始)virtual → 附加到當前鏈new → 當前鏈立即結束(該方法不入鏈)sealed → 加入鏈後結束鏈調用時(如A ref = new C(); ref.Foo()):
virtual):
此理論框架統一解釋override/new/sealed/virtual任意組合行為,為實戰驗證(下篇)奠定基礎。