抽象
標有關鍵字 abstract
的類無法例項化。
如果一個類包含抽象成員,或者它繼承了它未實現的抽象成員,則必須將該類標記為抽象。即使沒有涉及抽象成員,也可以將類標記為抽象。
當實現的某些部分需要由另一個元件指定時,抽象類通常用作基類。
abstract class Animal
{
string Name { get; set; }
public abstract void MakeSound();
}
public class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Meov meov");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Bark bark");
}
}
Animal cat = new Cat(); // Allowed due to Cat deriving from Animal
cat.MakeSound(); // will print out "Meov meov"
Animal dog = new Dog(); // Allowed due to Dog deriving from Animal
dog.MakeSound(); // will print out "Bark bark"
Animal animal = new Animal(); // Not allowed due to being an abstract class
使用關鍵字 abstract
標記的方法,屬性或事件表示該成員的實現應該在子類中提供。如上所述,抽象成員只能出現在抽象類中。
abstract class Animal
{
public abstract string Name { get; set; }
}
public class Cat : Animal
{
public override string Name { get; set; }
}
public class Dog : Animal
{
public override string Name { get; set; }
}