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

C# 多型核心概念總覽:虛擬方法、覆寫、抽象類別三大支柱

     編輯:關於C語言

前言

多型是物件導向三大支柱之一(封裝、繼承、多型)。C# 透過虛擬方法、覆寫、抽象類別/介面實現執行期多型。本文為總覽篇,連結三篇深度文章。

一、多型核心定義

多型允許用戶端對統一介面發出呼叫,具體執行哪個實作、如何執行,由執行期根據物件實際型別決定。

兩種多型

二、C# 實現動態多型的三大支柱

1. 虛擬方法

  • 關鍵字:virtual(基類)、override(衍生類)
  • 提供預設實作,衍生類可選擇性覆寫
  • 詳細請見:《C# 虛擬方法完整解析》

2. 覆寫虛擬方法

  • 簽章必須完全一致:名稱、回傳型別、參數
  • 強制 override,禁止 new/static/virtual
  • 基類參考指向衍生類實例 → 動態綁定
  • 詳細請見:《C# 衍生類別覆寫虛擬方法完整指南》

3. 抽象類別

  • 關鍵字:abstract class、abstract method
  • 無法實例化,僅供繼承
  • 強制衍生類實作所有抽象成員(除非衍生類也是抽象)
  • 詳細請見:《C# 抽象類別完整解析》

三、三者關係圖解


+------------------+      繼承       +------------------+
|  抽象類別        | ─────────────> |  具體類別        |
|  (abstract class)|                |  (concrete)      |
|                  |  實作抽象方法  |                  |
|  abstract void   |                |  override void   |
|  Speak();        |                |  Speak() { ... } |
+------------------+                +------------------+
         ^                                     |
         |              虛擬方法覆寫            |
         |  virtual void Speak() { ... }       |
         |  override void Speak() { ... }      |
         +-------------------------------------+

四、介面:多型的純粹契約

  • 介面定義只有簽章、無實作的契約
  • 類別實作介面 = 承諾提供所有成員實作
  • 多型最高形式:介面參考指向實作實例
  • 支援多重實作(一類別實作多介面)

五、多型實戰優勢

  1. 開放封閉原則 (OCP):對擴充開放,對修改關閉。新增衍生類無需修改用戶端代碼
  2. 依賴倒置 (DIP):高層模組依賴抽象(介面/抽象類),不依賴具體實作
  3. 測試便利性:可注入 Mock/Stub 實作介面/抽象類
  4. 外掛架構:動態載入實作介面的組件

六、總結導航

類型綁定時機C# 實現機制範例
靜態多型(編譯期)編譯期方法多載、泛型、擴充方法Print(int) vs Print(string)
動態多型(執行期)執行期虛擬方法覆寫、抽象方法實作、介面實作animal.Speak() → 狗吠/貓叫
主題核心關鍵字適用場景深度文章
虛擬方法virtual/override有預設實作、可選擇性覆寫《C# 虛擬方法完整解析》
覆寫規則override 簽章一致性衍生類自訂行為《C# 衍生類別覆寫虛擬方法》
抽象類別abstract class/method強制實作、無預設實作、不可實例化《C# 抽象類別完整解析》
介面interface純契約、多重實作、解耦(建議補充介面專文)

掌握虛擬方法、覆寫、抽象類別三大支柱,即掌握了 C# 動態多型的完整體系。

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