您的位置:首页 > 编程语言 > C#

C#回顾学习笔记三十二:密封类和密封方法

2017-09-23 12:44 253 查看
密封类:

密封类不允许被其他类继承。使用sealed修饰符就可以标记一个类是密封类,这样就可以防止该类被其他类继承。比如C#里系统预定好的String类就是密封类。通过“转到定义”可以发现String类被sealed修饰符标记。如图所示:



密封类的知识点:

1.被定义为sealed的类通常都是一些有着固定作用、完成某种标准功能的类。

2.有时候定义密封类是为了提高性能,由于密封类不存在被继承的问题,因而也不存在虚方法调用的问题,这样程序运行时就可以对密封类的方法调用进行优化。

3.如果视图将一个密封类作为其他类的父类,将会报错。因为密封类不能同时又是抽象类,因为抽象总是希望被继承。

==============================================

密封方法:将一个非密封类中的某个方法声明为密封方法,以防止在子类中对该方法进行重写。比如:

第1步,父类A.cs的代码:

class A
{
public virtual void HelloWorld()
{

}
}第2步,继承父类的B.cs代码:
class B : A
{
public sealed override void HelloWorld()
{

}
}第3步,继承B类的子类C.cs的代码:
class C : B
{
//编译时报错:继承成员HelloWorld()是sealed,无法进行重写
public override void HelloWorld()
{

}
}B.cs对父类的虚方法HelloWorld()进行了重写,并且使用了sealed修饰符,使得该方法成为了一个密封方法。这样C类在继承自B类后,就无法将该方法重写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: