密封类是类的一种,用sealed修饰,不能用作基类。因此,它也不能是抽象类。密封类主要用于防止派生。
密封类可以用来限制扩展性。当在程序中密封了某个类时,其他类不能从该密封类继承。使用密封类可以防止对类型进行自定义,这种特性在某些情况下与面向对象编程技术的灵活性和可扩展性是相抵触的。通常不建议使用密封的方法来处理类。
密封类的定义是通过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
{
}
}
错误提示如图10.11所示。
图10.11 错误提示
由于密封类的不可继承性,因此,它也不能是抽象类。密封类的主要作用是用于防止派生。密封类的这种特性使其从不用作基类,因此对密封类成员的调用速度略快。