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

C# 繼承機制詳解:基類與派生類的關係、多態與型別轉換

     編輯:關於C#

基本語法:冒號標記繼承

public class BaseClass {
    public BaseClass() { }
    public void BaseMethod() { }
}

public class DerivedClass : BaseClass {
    public DerivedClass() { }
    public void DerivedMethod() { }
}

DerivedClass 繼承 BaseClass 所有非私有成員(欄位、屬性、方法)。私有成員仍存在於記憶體中,但派生類不可直接存取。

型別相容與多態

派生類實例同時擁有兩種有效型別:自身型別與基類型別。

  • 隱含向上轉型:BaseClass b = new DerivedClass(); 安全,視圖縮小為基類成員。
  • 顯式向下轉型:DerivedClass d = (DerivedClass)b; 需確認實例真為派生類,否則拋 InvalidCastException。
  • is / as 模式檢查:if (b is DerivedClass d) { ... } 安全轉型。

多態性實現

基類定義 virtual 方法,派生類 override 重寫。透過基類引用呼叫,執行期動態分派至派生類實作:

public class Animal {
    public virtual void Speak() => Console.WriteLine("動物叫聲");
}
public class Dog : Animal {
    public override void Speak() => Console.WriteLine("汪汪");
}

Animal a = new Dog();
a.Speak(); // 輸出「汪汪」—— 多態

建構函式鏈

派生類建構函式隱含呼叫 base(),可顯式指定基類建構子:

public class Derived : Base {
    public Derived(int x) : base(x) { } // 呼叫 Base(int)
}

密封與抽象

  • sealed class:禁止被繼承。
  • abstract class:不可實例化,可含 abstract 成員強制派生類實作。

總結

繼承實現「是一種」關係,配合多態實現開放封閉原則。善用 virtual/override、is/as、sealed/abstract 控制繼承層級與行為擴充。

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