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

C# 繼承機制全解析:單一繼承、成員遮蔽與 base 關鍵字應用

     編輯:關於C#

繼承的基本概念與單一繼承限制

繼承讓衍生類別能取得基類別的成員(方法、欄位、屬性、事件、索引子),並可新增或修改行為。C# 採單一繼承模型:一個類別只能直接繼承自一個基類別,這避免了 C++ 多重繼承帶來的菱形繼承等複雜問題。所有類別隱含繼承自 Object 類別。

繼承規則速覽

  • 傳遞性:C 繼承 B、B 繼承 A ⇒ C 擁有 A、B 所有非私有成員。
  • 擴充不刪減:衍生類別只能新增成員,無法移除繼承而來的成員定義。
  • 建構子/解構子不繼承:其餘成員皆可繼承,存取修飾詞只影響能否存取。
  • 成員遮蔽:衍生類別宣告同名成員會遮蔽基類別成員,建議加 new 關鍵字消除警告。
  • 虛擬成員支援多態:虛擬方法、屬性、索引子可被覆寫,實現執行時多態。

程式碼範例:Vehicle 基類別與 Car 衍生類別

using System;

class Vehicle {
    public int Wheels { get; set; }
    protected float Weight { get; set; }
    public Vehicle() { }
    public Vehicle(int w, float g) { Wheels = w; Weight = g; }
    public virtual void Speak() => Console.WriteLine("Vehicle is speaking!");
}

class Car : Vehicle {
    public int Passengers { get; set; }
    public Car(int w, float g, int p) : base(w, g) { Passengers = p; }
    public new void Speak() => Console.WriteLine("Di-di!"); // 遮蔽基類別方法
}

base 關鍵字的三大用法

  1. 呼叫基類別建構子:: base(參數) 在衍生類別建構子中初始化基類別狀態。
  2. 存取基類別被遮蔽的成員:base.方法名() 或 base.屬性名。
  3. 呼叫基類別虛擬方法實作:在 override 方法中透過 base.Method() 保留基類別邏輯。

常見錯誤與最佳實務

  • 忘記在衍生類別建構子呼叫 base() 導致基類別未正確初始化。
  • 濫用 new 遮蔽而非 override 覆寫,破壞多態行為。
  • 嘗試在靜態方法中使用 base(編譯錯誤)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved