首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 繼承機制全景:從基礎語法到多型、抽象、密封的進階掌握

     編輯:關於C#

繼承與多型是物件導向雙支柱。繼承建立類別層級,實現程式碼復用與擴展;多型讓同一操作作用於不同物件產生不同行為,支援開閉原則。

繼承核心機制

  • 單一繼承:class Derived : Base
  • 繼承成員:公有/受保護/內部成員(建構函式、解構函式、靜態建構函式除外)
  • base 關鍵字:呼叫基類建構函式、存取被遮蔽成員
  • 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類別/方法/屬性不可繼承/不可覆寫防止濫用繼承、執行期優化(去虛擬化)、安全封鎖

抽象類別 vs 介面選型

  • 需要共享程式碼/狀態/建構函式 → 抽象類別
  • 純契約、多實現、跨層級 → 介面
  • 常見組合:介面定義契約 → 抽象類別部分需求/共享邏輯 → 具體類別實現

屬性繼承特殊規則

  • override 屬性:名稱、型別、存取修飾詞必須一致
  • 基類單 get → 衍生類可單 get 或雙 get/set
  • 基類雙 get/set → 衍生類可單或雙
  • abstract 屬性:存取子隱含 virtual,衍生類必須 override 實現
  • sealed override 屬性:終止繼承鏈

進階:記憶體佈局與效能

  • 單一繼承:衍生類物件 = 基類部分 + 衍生部分,記憶體連續
  • 虛方法表:每含虛方法的類別有一個 v-table,物件頭部指向型別 v-table
  • sealed 類別/方法:JIT 可去虛擬化內聯,提升效能

精通繼承機制,是設計清晰層級、高效能多型、可演進類別體系的核心能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved