sealed 修飾符可用於類防止繼承,也可用於方法 防止派生類重寫。稱此為密封方法。
非所有成員均可密封:密封方法必須重寫基類虛方法 並提供具體實現,故 sealed 總與 override 同時使用。範例:
using System;
class A {
public virtual void F() { Console.WriteLine("A.F"); }
public virtual void G() { Console.WriteLine("A.G"); }
}
class B : A {
sealed override public void F() { Console.WriteLine("B.F"); }
override public void G() { Console.WriteLine("B.G"); }
}
class C : B {
override public void G() { Console.WriteLine("C.G"); }
// override public void F() { } // 編譯錯誤:F 已密封
}
B 重寫 A 兩虛方法,F 加 sealed 成密封方法。C 可重寫 G,但不可重寫 F。