抽象類別(Abstract Class):
在 C# 中用於定義一個不能實例化的類別,通常用作其他類別的基底類別。
最重要的理念是隱藏工作細節,對於使用者而言,僅知道如何使用這些功能。
介面(Interface):
一個重要概念,用於定義一組抽象方法和屬性,但沒有提供實際的實作。
類別可以實作一個或多個介面,以強制類別實現指定的方法和屬性。
假設我們正在建立一個動物分類系統,我們希望有不同種類的動物,例如哺乳動物和鳥類,並且每種動物都能發出聲音。我們可以使用抽象類別來定義通用的 Animal 類別,然後從它指派具體的動物類別。
// 定義抽象類別 Animal
abstract class Animal {
public string Name { get; set; }
public Animal(string name) {
Name = name;
}
// 定義抽象方法 MakeSound
public abstract void MakeSound();
}
// 子類別,繼承抽象類別
class Mammal : Animal {
public Mammal(string name) : base(name) { }
public override void MakeSound() {
Console.WriteLine(Name + "是哺乳動物,發出哺乳動物的聲音。");
}
}
// 子類別,繼承抽象類別
class Bird : Animal {
public Bird(string name) : base(name) { }
public override void MakeSound() {
Console.WriteLine(Name + "是鳥類,發出鳥類的聲音。");
}
}
class Program {
static void Main() {
// 創建哺乳動物和鳥類物件
Mammal lion = new Mammal("獅子");
Bird eagle = new Bird("鷹");
// 呼叫 MakeSound 方法
lion.MakeSound(); // 輸出:獅子是哺乳動物,發出哺乳動物的聲音。
eagle.MakeSound(); // 輸出:鷹是鳥類,發出鳥類的聲音。
}
}
在這個範例中,我們定義了一個抽象類別 Animal,它包含屬性 Name 和抽象方法 MakeSound。然後,我們從 Animal 派生了具體的哺乳動物和鳥類類別,並實作了 MakeSound 方法以模擬不同種類的動物發聲的行為。這樣我們就可以創建不同種類的動物,並呼叫它們的 MakeSound 方法來聽到它們的聲音。
假設我們正在建立一個動物分類系統,我們希望不同種類的動物都能移動,並發出聲音。我們可以使用介面來定義通用的 IMovable 和 ISound 介面,然後讓動物類別實作這些介面。
// 定義移動介面
interface IMovable {
void Move();
}
// 定義發聲介面
interface ISound {
void MakeSound();
}
// 實作動物類別,同時實作 IMovable 和 ISound 介面
class Animal : IMovable, ISound {
public string Name { get; set; }
public Animal(string name) {
Name = name;
}
public void Move() {
Console.WriteLine(Name + "正在移動。");
}
public void MakeSound() {
Console.WriteLine(Name + "正在發出聲音。");
}
}
class Program {
static void Main() {
// 創建動物物件
Animal lion = new Animal("獅子");
Animal bird = new Animal("鳥");
// 呼叫 IMovable 和 ISound 介面的方法
lion.Move(); // 輸出:獅子正在移動。
lion.MakeSound(); // 輸出:獅子正在發出聲音。
bird.Move(); // 輸出:鳥正在移動。
bird.MakeSound(); // 輸出:鳥正在發出聲音。
}
}
沒在leetcode中找到特別相關繼承的考題
如果有看到也可以跟我說 我補充上來
==========
以下我會以w3schools的Example範例來出題
請朋友們可以跟我一起練習
問題1(抽象類別):
請使用抽象類別設計一個抽象類別Animal,
該類別包含一個抽象方法 animalSound 和一個常規方法 sleep。
然後,建立一個具體的類別(Pig)繼承自動物類別,實作 animalSound 方法,
並創建一個物件並呼叫這兩個方法。
欲執行程式如下:
class Program
{
static void Main(string[] args)
{
// 創建一個 Pig 物件
Pig myPig = new Pig();
// 呼叫抽象方法 animalSound
myPig.animalSound(); // 輸出:The pig says: wee wee
// 呼叫常規方法 sleep
myPig.sleep(); // 輸出:Zzz
}
}
Example的答案:
by w3schools C# abstract example
問題2(介面):
請使用介面(Interface)設計一個動物介面(IAnimal),
該介面包含一個方法 animalSound(沒有方法實作)。
然後,建立一個具體的類別(Pig)實作該介面,並呼叫介面方法。
欲執行程式如下:
class Program
{
static void Main(string[] args)
{
// 創建一個 Pig 物件
Pig myPig = new Pig();
// 呼叫介面方法 animalSound
myPig.animalSound(); // 輸出:The pig says: wee wee
}
}
Example的答案:
by w3schools cs_interface example
期望挑戰30天持續更新成功 ~ DAY7