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

C# 教程第 8 課:類別繼承完整指南(基類建構子、覆寫成員、base 呼叫、型別轉換)

     編輯:關於C語言

學習目標

  1. 實作基類與衍生類
  2. 衍生類初始化基類 (base(...))
  3. 呼叫基類成員 (base.方法)
  4. 覆寫基類成員 (override/new)
  5. 衍生類轉換為基類參考

基本繼承:ParentClass / ChildClass

using System;

public class ParentClass
{
    public ParentClass() => Console.WriteLine("Parent Constructor.");
    public void Print() => Console.WriteLine("I'm a Parent Class.");
}

public class ChildClass : ParentClass
{
    public ChildClass() => Console.WriteLine("Child Constructor.");

    public static void Main()
    {
        var child = new ChildClass();
        child.Print(); // 繼承自 ParentClass
    }
}

輸出

Parent Constructor.
Child Constructor.
I'm a Parent Class.

關鍵觀察

  • 建構子鏈:基類建構子先於衍生類建構子執行(輸出順序可見)。
  • 成員繼承:ChildClass 未定義 Print,直接使用 ParentClass 版本。
  • 單一繼承:C# 僅支援單一基類 (: ParentClass)。

進階:基類建構子參數與成員覆寫

public class Parent
{
    private string msg;
    public Parent() => Console.WriteLine("Parent Constructor.");
    public Parent(string s) { msg = s; Console.WriteLine(msg); }
    public virtual void Print() => Console.WriteLine("I'm a Parent Class.");
}

public class Child : Parent
{
    // 呼叫基類帶參數建構子
    public Child() : base("From Derived")
    {
        Console.WriteLine("Child Constructor.");
    }

    // 覆寫並呼叫基類版本
    public override void Print()
    {
        base.Print(); // 呼叫 Parent.Print()
        Console.WriteLine("I'm a Child Class.");
    }

    public static void Main()
    {
        var child = new Child();
        child.Print();           // 呼叫 Child.Print() -> Parent.Print() -> Child 額外輸出
        ((Parent)child).Print(); // 顯式轉型為 Parent,仍呼叫 Child.Print() (虛擬方法)
    }
}

輸出

From Derived
Child Constructor.
I'm a Parent Class.
I'm a Child Class.
I'm a Parent Class.

核心概念總結

概念語法說明
繼承宣告class Child : Base單一繼承
基類建構子呼叫: base(參數)衍生類建構子第一行,必須最先呼叫
呼叫基類成員base.Method()存取被覆寫/隱藏的基類實作
覆寫虛擬方法override需基類標記 virtual/abstract
隱藏非虛擬成員new靜態繫結,基類參考呼叫仍執行基類版本
衍生轉基類(Base)derived安全向上轉型,虛擬方法仍依實際型別派發
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved