本节书摘来自异步社区《.NET程序员面试秘笈》一书中的第1章,面试题5,作者: 张云翯, 更多章节内容可以访问云栖社区“异步社区”公众号查看。
面试题5 描述sealed修饰符的使用
.NET程序员面试秘笈
【考点】sealed修饰符的意义,密封类和抽象类的关系,sealed修饰符的用法。
【出现频率】
【解答】
在ch01目录下新建一个程序文件,并命名为Sealed.cs,编写代码如程序1.6所示。
在命令行下编译Sealed.cs后,执行Sealed程序,其效果如图1.8所示。
从本例代码中可知,密封类一般情况下的使用方法和其他类一样,只是无法被继承。代码中Product类的虚方法display方法被Phone类重写,而被重写的display方法前面也加了sealed修饰符。在这种情况下,密封的display方法无法被所属类的子类继续重写,如本例代码中的Phone3G类,无法重写display方法。
说明:
密封类可用于单一功能的实现,并且防止被意外地继承,产生非预期的效果,这也是封装性的体现。
【分析】
sealed修饰符用于修饰类、实例方法和属性。sealed用于修饰类时,该类无法被继承,所以该类也被称为密封类。而abstract类(抽象类)必须被继承才有意义,所以,sealed修饰符和abstract修饰符是互相排斥的,无法共存。密封方法会重写基类的方法,sealed用于修饰实例被重写的虚方法或虚属性时,表示该方法或属性无法再被重写。
注意:
sealed修饰实例方法或属性时,必须和override一起使用。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。