繼承與多型是物件導向雙支柱。繼承建立類別層級,實現程式碼復用與擴展;多型讓同一操作作用於不同物件產生不同行為,支援開閉原則。
class Derived : Basebase 關鍵字:呼叫基類建構函式、存取被遮蔽成員sealed 阻止繼承,abstract 強制繼承
class Animal { public virtual void Speak() => Console.WriteLine("..."); }
class Dog : Animal { public override void Speak() => Console.WriteLine("汪"); }
class Cat : Animal { public override void Speak() => Console.WriteLine("喵"); }
// 多型分派
Animal a = new Dog(); a.Speak(); // 輸出「汪」 - 執行期根據實際型別分派
virtual:基類宣告可被覆寫override:衍生類提供新實現new:隱藏基類成員(非多型,編譯期綁定)| 關鍵字 | 適用對象 | 語義 | 典型場景 |
|---|---|---|---|
abstract | 類別/方法/屬性/事件 | 不可實例化/必須實現/無實現 | 定義契約骨架,強制衍生類完成 |
sealed | 類別/方法/屬性 | 不可繼承/不可覆寫 | 防止濫用繼承、執行期優化(去虛擬化)、安全封鎖 |
override 屬性:名稱、型別、存取修飾詞必須一致get → 衍生類可單 get 或雙 get/setget/set → 衍生類可單或雙abstract 屬性:存取子隱含 virtual,衍生類必須 override 實現sealed override 屬性:終止繼承鏈sealed 類別/方法:JIT 可去虛擬化內聯,提升效能精通繼承機制,是設計清晰層級、高效能多型、可演進類別體系的核心能力。