想想看,如果所有的类都可以被继承,继承的滥用会带来什么后果?类的层次结构体系将变得十分庞大,类之间的关系杂乱无章,对类的理解和使用都会变得十分困难。有时候,我们并不希望自己编写的类被继承。另一些时候,有的类已经没有再被继承的必要。C#提出了一个密封类(sealed class)的概念,帮助开发人员来解决这一问题。
密封类在声明中使用sealed修饰符,这样就可以防止该类被其它类继承。如果试图将一个密封类作为其它灯的基类,C#将会提示出错。理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。
在哪些场合下使用密封类呢?密封类可以阻止其它程序员在无意中继承该类,而且密封类可以起到运行时优化的效果。实际上,密封类不可能有派生类,如果密封类实例中存在虚成员函数,该成员函数可以转化为非虚的,函数修饰符virtual不再生效。
让我们看下面的例子:
abstract class A { public abstract void F(); } sealed class B:A { public override void F(){ //F的具体实现代码 } }
如果我们尝试写下面的代码:
class C:B{}
C#会指出这个错误,告诉你B是一个密封类,不能试图从B中派生任何类。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c#
, class
, 函数
, 抽象
, 密封舱
, c#密封类个方法
, 一个
sealed
抽象类和接口的区别、c#密封类、密封类的作用、密封类和密封方法、密封类和抽象类,以便于您获取更多的相关知识。