C# 抽象
抽象類和抽象方法
資料抽象是隱藏某些詳細資訊而僅向用戶顯示必要資訊的過程。
抽象可以透過抽象類或介面來實現(下一章將詳細介紹)。
abstract
關鍵字用於類和方法
- 抽象類:是一個受限類,不能用於建立物件(要訪問它,必須從另一個類繼承)。
- 抽象方法:只能在抽象類中使用,並且它沒有方法體。方法體由派生類(繼承自)提供。
抽象類可以同時擁有抽象方法和常規方法
abstract class Animal
{
public abstract void animalSound();
public void sleep()
{
Console.WriteLine("Zzz");
}
}
從上面的示例來看,不可能建立 Animal 類的物件
Animal myObj = new Animal(); // Will generate an error (Cannot create an instance of the abstract class or interface 'Animal')
要訪問抽象類,必須從另一個類繼承。讓我們將我們在多型性章節中使用的 Animal 類轉換為抽象類。
還記得在繼承章節中,我們使用 :
符號來繼承類,並使用 override
關鍵字來重寫基類方法。
示例
// Abstract class
abstract class Animal
{
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep()
{
Console.WriteLine("Zzz");
}
}
// Derived class (inherit from Animal)
class Pig : Animal
{
public override void animalSound()
{
// The body of animalSound() is provided here
Console.WriteLine("The pig says: wee wee");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound(); // Call the abstract method
myPig.sleep(); // Call the regular method
}
}