NET面试题:在C#中如何声明一个类不能被继承
这个问题相对比较简单,应聘者对于这类问题应该不会感到什么难度,但读者更应该掌握的是,为什么要把类型申明为不可继承,这样做的原因是什么。
  所涉及的知识点
· C#中申明叶子类
· 类型不被继承的安全性
  分析问题
继承是面向对象思想中非常重要的一个部分,在各种面向对象的语言中都有实现,继承能够带给程序灵活性和可扩展性。但同时继承也存在一些问题,在设计一个会被继承的类型时,往往需要反复斟酌考虑再三,下面是常见的一些类型被继承时容易产生的问题:
· 为了让派生类型可以顺利地序列化,非叶子类需要实现恰当的序列化方法。
· 当非叶子类实现了ICloneable等接口时,意味着所有派生类被迫需要实现接口中的相同方法。
· 非叶子类的构造方法不能调用虚方法,也不应该把this指针传递给其他对象和方法。
设计一个可以被继承的类型相对复杂得多,而且更容易产生不能预计的问题。所以C#提供了一个关键字用以申明类型不可被继承:sealed。任何被sealed修饰的类将不能被继承,C#编译器将在编译阶段保证这一机制。
设计时任何没有派生需要的类型都应该被显式地添加sealed关键字,这是避免由继承带来不可预计问题的最有效办法。
  答案
C#通过关键字sealed可以申明一个类型不可被继承,设计中应该为所有不被作为基类的类型添加sealed关键字,以避免各种来自继承的易产生的错误
 

更多.net面试题.net电子书,.net教学视频请参考"爱学网izixue"