iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0
自我挑戰組

學習C#續系列 第 7

Day 7: 多型(Polymorphism)

  • 分享至 

  • xImage
  •  

多型(Polymorphism)本質:同一操作介面,面對不同型別的物件時,能各自展現出不同的實作行為。

父子類別的覆寫機制(Override vs Virtual):
* 基底類別(父類別):需加上 virtual 關鍵字,允許該方法被子類別重新定義。
* 衍生類別(子類別):需加上 override 關鍵字,明確表示要覆寫父類別的虛擬實作。
* 簽章一致性:覆寫的方法必須與父類別具有完全相同的方法名稱、參數型別與數量、回傳型別,且存取範圍不能比父類別更嚴格。

多型實作的核心機制(動態繫結 / Dynamic Binding):
* 當使用「父類別型別」的變數指向「子類別實體」時,程式在執行階段(Runtime)會自動根據該實體的實際型別,動態決定並呼叫子類別覆寫後的版本。
* 配合集合(例如 List<父類別>),可用同一段迴圈邏輯同時操控各種不同特化的子類別。

覆寫(override)與隱藏(new)的差異:
* new:只依據宣告的「變數型別」決定呼叫對象(靜態繫結)。
* override:永遠依據「實際物件記憶體實體」決定呼叫對象(動態多型)。

實作範例:
https://ithelp.ithome.com.tw/upload/images/20260920/20178925nBfW6n4XNA.png
https://ithelp.ithome.com.tw/upload/images/20260920/201789255gNML3chh8.png


上一篇
Day 6: 單一繼承制(Single Inheritance)
下一篇
Day 8: 抽象類別(Abstract Class)、密封類別(Sealed Class)、介面(Interface)
系列文
學習C#續8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言