如果所有类都可以被继承,那么很容易导致继承的滥用,进而使类的层次结构体系变得十分复杂,这样使开发人员对类的理解和使用变得十分困难。为了避免滥用继承,C#中提出了密封类的概念。
密封类概述及声明
密封类可以用来限制扩展性,如果密封了某各类,则其他类不能从该类继承;如果密封了某个成员,则派生类不能重写该成员的实现。默认情况下,不应密封类型和成员。密封可以防止对库的类型和成员进行自定义,但也会硬性某些开发人员对可用性的认识。
C#中使用密封类时,如果满足如下条件,则应将其密封。
- 类时静态类。
- 类包含带有安全敏感信息的继承的手保护成员。
- 类继承多个虚成员,并且密封每个成员的开发和测试开销明显大于密封整个类。
- 类时一个要求使用反射进行快速搜索的属性。密封属性可提高反射在检索属性时的性能。
C#中声明密封类时需要使用 sealed 关键字,具体语法格式如下:
访问修饰符 sealed class 类名:基类或接口
{
//类成员
}
说明:
1.密封类不能作为基类被继承,但它可以继承别的类或接口。
2.在密封类中