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类后,就无法将该方法重写。
密封类不允许被其他类继承。使用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类后,就无法将该方法重写。
相关文章推荐
- C#学习笔记——密封类与密封方法
- C#回顾学习笔记二十九:new关键字隐藏父类的方法
- C#回顾学习笔记三十:虚方法的重写
- C#回顾学习笔记十四:C#中自定义方法与调用方法
- C#回顾学习笔记十七:方法的重载
- CLR Via C# 学习笔记(4) 方法 构造函数
- CLR Via C# 学习笔记(6) 方法参数相关(out ref params)
- Visual C# 技术内幕学习笔记 第二章 C#基础(3) 继承和方法
- Java程序员的C#学习笔记(3) -- 类和方法(Part 1)
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- 【转】.NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
- C#学习笔记4——扩展方法
- C#==>密封类,密封方法
- C# OpenCV学习笔记三之图像捕捉及其灰度转换方法
- C#改写方法学习笔记
- C#.NET学习笔记---C#中方法覆盖时override和new的比较,abstract和virtual的比较(含C#多态的实现)
- .NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
- CLR Via C# 学习笔记(4) 方法 构造函数
- C#.NET学习笔记---C#中方法参数的传递方式: 值类型(默认),ref类型,out类型和params类型
- .NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析