在 C# 中,繼承和多型是物件導向程式設計(OOP)的核心概念之一。
繼承:允許一個類別(稱為子類別或衍生類別)繼承另一個類別
(稱為基底類別或父類別)的屬性和方法。
多型:允許不同的類別實現相同的方法名稱,但具有不同的實作。
繼承是一個子類別可以繼承父類別的特性(屬性和方法)的概念。
子類別可以擴展或修改父類別的行為,同時繼承其共同特性。
C# 的繼承需使用關鍵字符號":",語法如下:
存取修飾詞 class 子類別名稱: 父類別名稱
{
//子類別欄位、屬性與方法
}
單繼承是指一個類別只能繼承自另一個類別
PS. C# 不支持多重繼承(即一個類別同時繼承多個類別)
圖示舉例:
程式範例:
// 定義父類別
class Animal { //對應上方圖示Class A
public string Name { get; set; }
public void Eat() {
Console.WriteLine("動物正在進食。");
}
}
// 定義子類別
class Dog : Animal { //對應上方圖示ClassB
public void Bark() {
Console.WriteLine("狗正在叫。");
}
}
在這個範例中,我們定義了一個 Animal 父類別和一個 Dog 子類別。Dog 子類別繼承了 Animal 父類別的 Eat 方法,並添加了自己的 Bark 方法。
// 定義父類別
class Animal { //對應上方圖示Class A
public string Name { get; set; }
public void Eat() {
Console.WriteLine("動物正在進食。");
}
}
// 定義子類別
class Dog : Animal { //對應上方圖示ClassB
public void Bark() {
Console.WriteLine("狗正在叫。");
}
}
// 定義子類別
class Cat : Animal { //對應上方圖示ClassC
public void Meow() {
Console.WriteLine("貓正在喵喵叫。");
}
}
在這個示例中,Dog 和 Cat 類別都繼承自 Animal 類別,每個子類別有自己的獨特方法。
// 定義父類別
class Animal { //對應上方圖示Class A
public string Name { get; set; }
public void Eat() {
Console.WriteLine(Name + "正在進食。");
}
}
class Mammal : Animal { //對應上方圖示ClassB
public void Breathe() {
Console.WriteLine(Name + "是哺乳動物,正在呼吸。");
}
}
class Dog : Mammal { //對應上方圖示ClassC
public void Bark() {
Console.WriteLine(Name + "是狗,正在叫。");
}
}
這個範例中,Dog 類別多層次繼承自 Animal 和 Mammal 類別,並添加了自己的方法。
PS. 這邊要注意,多層次繼承可能會讓程式碼變得更複雜,因此要謹慎使用。
多型允許不同的類別實現相同的方法名稱,但具有不同的實作。
這使得代碼更具靈活性,因為你可以在運行時決定要呼叫的方法。
// 定義父類別
class Animal {
public virtual void MakeSound() {
Console.WriteLine("動物發出聲音。");
}
}
// 定義子類別
class Dog : Animal {
public override void MakeSound() {
Console.WriteLine("狗發出「汪汪」的聲音。");
}
}
// 定義另一個子類別
class Cat : Animal {
public override void MakeSound() {
Console.WriteLine("貓發出「喵喵」的聲音。");
}
}
class Program {
static void Main() {
// 創建不同的子類別物件
Animal myAnimal = new Animal();
Dog myDog = new Dog();
Cat myCat = new Cat();
// 使用多型呼叫方法
Animal[] animals = { myAnimal, myDog, myCat };
foreach (Animal animal in animals) {
animal.MakeSound();
}
}
}
在這個範例中,我們定義了一個 Animal 父類別和兩個子類別 Dog 和 Cat。每個子類別都覆寫了父類別的 MakeSound 方法,實現了不同的聲音。
這邊創建了一個 Animal class,其中包含不同的子類別物件,然後使用多型的方式呼叫它們的 MakeSound 方法,這樣可以根據實際物件的類型來決定要呼叫的方法。
繼承和多型是物件導向程式設計的強大工具,好好使用可以幫助我們建立更具組織性和可擴展性的程式碼。
沒在leetcode中找到特別相關繼承的考題
如果有朋友有看到也可以跟我說 我補充上來
這邊可以看w3schools cs_inheritance練習實作
期望挑戰30天持續更新成功 ~ DAY6