密封類可以用來限制擴展性。當在程式中密封了某個類時,其他類不能從該密封類繼承。使用密封類可以防止對類型進行自定義,這種特性在某些情況下與面向對象編程技術的靈活性和可擴展性是相牴觸的。通常不建議使用密封的方法來處理類。
密封類的定義是通過sealed關鍵字實現的,如下的代碼定義了一個密封類。
sealed class MySealedClass
{
}
密封類不能用作基類。如下代碼將產生編譯時錯誤。
using System;
using System.Collections.Generic;
using System.Text;
namespace Example10_15
{
/// <summary>
/// 密封類Class1
/// </summary>
sealed class Class1
{
}
/// <summary>
/// Class2類,繼承密封類Class1,將產生錯誤
/// </summary>
class Class2 : Class1
{
}
}
由於密封類的不可繼承性,因此,它也不能是抽象類。密封類的主要作用是用於防止派生。密封類的這種特性使其從不用作基類,因此對密封類成員的調用速度略快。