C#中sealed关键字
2015-11-29 14:40
661 查看
1. sealed关键字
当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。类似于Java中final关键字。
在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。
2. sealed 修饰方法或属性
能够允许类从基类继承,并防止它们重写特定的虚方法或虚属性。
1)sealed是对虚方法或虚属性,也就是同override一起使用,如果不是虚方法或虚属性会报出错误:cannot be sealed because it is not an override
[cpp]
view plaincopyprint?
public class D
{
/* ConsoleApplication1.MSFun.Sealed.D.M()'
* cannot be sealed because it is not an override
*/
public sealed void M() { Console.WriteLine("D.M()"); }
}
2)防止子类重写特定的方法或属性
[cpp]
view plaincopyprint?
public class A
{
protected virtual void M() { Console.WriteLine("A.M()"); }
protected virtual void M1() { Console.WriteLine("A.M1()"); }
}
public class B : A
{
protected sealed override void M() { Console.WriteLine("B.M()"); }
protected override void M1() { Console.WriteLine("B.M1()"); }
}
public sealed class C : B
{
/* ConsoleApplication1.MSFun.Sealed.C.M()':
* cannot override inherited member 'ConsoleApplication1.MSFun.Sealed.B.M()'
* because it is sealed */
//protected override void M() { Console.WriteLine("C.M()"); }
protected override void M1() { Console.WriteLine("C.M1()"); }
}
当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。类似于Java中final关键字。
在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。
2. sealed 修饰方法或属性
能够允许类从基类继承,并防止它们重写特定的虚方法或虚属性。
1)sealed是对虚方法或虚属性,也就是同override一起使用,如果不是虚方法或虚属性会报出错误:cannot be sealed because it is not an override
[cpp]
view plaincopyprint?
public class D
{
/* ConsoleApplication1.MSFun.Sealed.D.M()'
* cannot be sealed because it is not an override
*/
public sealed void M() { Console.WriteLine("D.M()"); }
}
2)防止子类重写特定的方法或属性
[cpp]
view plaincopyprint?
public class A
{
protected virtual void M() { Console.WriteLine("A.M()"); }
protected virtual void M1() { Console.WriteLine("A.M1()"); }
}
public class B : A
{
protected sealed override void M() { Console.WriteLine("B.M()"); }
protected override void M1() { Console.WriteLine("B.M1()"); }
}
public sealed class C : B
{
/* ConsoleApplication1.MSFun.Sealed.C.M()':
* cannot override inherited member 'ConsoleApplication1.MSFun.Sealed.B.M()'
* because it is sealed */
//protected override void M() { Console.WriteLine("C.M()"); }
protected override void M1() { Console.WriteLine("C.M1()"); }
}
相关文章推荐
- C#与C++的混合编程 之三 C++与C#的数据传递与类型转换
- C#与C++的混合编程 之二 使用非托管dll 导出标准函数
- 【C#】用组件的Anchor属性解决最大化组件的缩放问题
- C#与C++的混合编程 之一 方法介绍
- 【C#】文件选择对话框OpenFileDialog与下列列表ComboBox
- 【CS】——C#初识
- C#开篇
- WCF 之角色验证
- C#-高血压生活习惯数据模拟
- BC#64 4.Tree
- C#4.0之dynamic的使用
- C#程序从Excel表格中读取数据并进行处理
- C# 操作Excel
- C#—数据类型
- C#中的Contains与IndexOf的区别
- C#中使用split分割字符串的方法小结
- C#中struct与class的区别
- c#socket
- C#中DllImport用法汇总
- C#编程实现发送邮件的方法(可添加附件)