C#如何声明一个类使其不能被继承?

(1)快速回答

这是一个被问烂的问题,在C#中可以通过sealed关键字来申明一个不可被继承的类,C#将在编译阶段保证这一机制

(2)拓展延伸

继承是面向对象思想中最重要的一环,但是否想过继承也存在一些问题呢?.

在设计一个会被继承的类型时,往往需要考虑再三,下面例举了常见的一些类型被继承时容易产生的问题:

  • 为了让派生类型可以顺利地序列化,非叶子类需要实现恰当的序列化方法;

  • 当非叶子类实现了ICloneable等接口时,意味着所有的子类都被迫需要实现接口中定义的方法;

  • 非叶子类的构造方法不能调用虚方法,而且更容易产生不能预计的问题;

鉴于以上问题,在某些时候没有派生需要的类型都应该被显式地添加sealed关键字,这是避免继承带来不可预计问题的最有效办法