使用 abstract 關鍵字定義不完整的類別或成員,必須在衍生類別中實作:
public abstract class A { /* 成員 */ }
抽象類別無法實例化,用途是提供多個衍生類別共用的基底定義。
只有宣告無實作,以分號結尾:
public abstract class A
{
public abstract void DoWork(int i);
}
衍生類別必須實作所有抽象方法。
抽象類別可繼承具體類別並將虛擬方法標記為抽象:
public class D
{
public virtual void DoWork(int i) { /* 原始實作 */ }
}
public abstract class E : D
{
public abstract override void DoWork(int i); // 強制子類別重新實作
}
public class F : E
{
public override void DoWork(int i) { /* 新實作 */ }
}