當抽象類別繼承虛擬方法並將其標記為 abstract override,衍生類別必須提供新實作,無法呼叫基底實作:
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) { /* 新實作 */ }
}
使用 sealed 關鍵字防止被繼承,也不能是抽象類別:
public sealed class D { /* 成員 */ }
密封類別的成員呼叫在執行時可稍微優化。
在衍生類別覆寫虛擬成員時,可加上 sealed 防止進一步覆寫:
public class D : C
{
public sealed override void DoWork() { } // 子類別無法再 override
}