sealed修饰符
sealed(C# 参考)
当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。 在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。
class A {}
sealed class B : A {}
还可以在重写基类中的虚方法或虚属性的方法或属性上使用 sealed 修饰符。 这将使您能够允许类从您的类继承,并防止它们重写特定的虚方法或虚属性。
示例
在下面的示例中,Z 从 Y 继承,但 Z 无法重写在 X 中声明并在 Y 中密封的虚函数 F。
C#代码
class X
{
protected virtual void F() { Console.WriteLine("X.F"); }
protected virtual void F2() { Console.WriteLine("X.F2"); }
}
class Y : X
{
sealed protected override void F() { Console.WriteLine("Y.F"); }
protected override void F2() { Console.WriteLine("Y.F2"); }
}
class Z : Y
{
// Attempting to override F causes compiler error CS0239.
// protected override void F() { Console.WriteLine("Z.F"); } // Overriding F2 is allowed.
protected override void F2() { Console.WriteLine("Z.F2"); }
}
注意:
1、当在类中定义新的方法或属性时,通过不将这些方法或属性声明为 virtual,可防止派生类重写这些方法或属性。
2、将 abstract 修饰符用于密封类是错误的做法,因为抽象类必须由提供抽象方法或属性的实现的类继承。
3、当sealed应用于方法或属性时,sealed 修饰符必须始终与 override 一起使用。
4、由于结构是隐式密封的,因此它们不能被继承。
sealed修饰符的更多相关文章
- C# 中的sealed修饰符学习
转载原地址 http://developer.51cto.com/art/200908/147327.htm C#语言还是比较常见的东西,这里我们主要介绍C# sealed修饰符,包括介绍两个修饰符在 ...
- sealed 修饰符
当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承. 在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承. class A {} sealed class B ...
- c#中sealed修饰符
sealed 修饰符表示密封 用法: 1.用于类时,表示该类不能再被继承,不能和abstract同时使用,因为这两个修饰符在含义上互相排斥 2.用于方法和属性时,表示该方法或属性不能再被重写,必须和o ...
- C#--virtual,abstract,override,new,sealed修饰符学习
1.参考博客 http://www.cnblogs.com/oneword/archive/2009/07/02/1515279.html http://www.cnblogs.com/mygood ...
- 深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)
访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类.类成员函数.类成员变量进行访问控制.同时,访问控制符也是语法保留关键字,用于封装组件. Public, Private, Protec ...
- C#学习笔记---修饰符,this关键字和static关键字
1. C#中类的修饰符: public 表示不限制对该类的访问 protected 表示只能从所在类和所在类派生的子类进行访问 private 只有其所在类才能访问 internal 只有对 ...
- abstract修饰符
abstract(C# 参考) abstract 修饰符指示所修饰的内容缺少实现或未完全实现. abstract 修饰符可用于类.方法.属性.索引器和事件. 在类声明中使用 abstract 修饰符以 ...
- Patial修饰符
C#中新建一个Windows Form时,后台代码都会自动添加如下代码: public partial class Form1 : Form { public Form1() { Initialize ...
- 【转】C# 中访问修饰符
用通过代码: 类内部 using System;class Mod{ void defaultMethod() { Console.WriteLine("this ...
随机推荐
- 150. Evaluate Reverse Polish Notation
Valid operators are +, -, *, /. Each operand may be an integer or another expression. Some examples: ...
- ES6-Symbol
javaScript的数据类型:number,string,boolean,undefined,null,object ES6带来了一个新的数据类型:symbol 目的是:解决对象的属性名冲突的问题. ...
- JS开发者常用的10个Sublime Text插件
Sublime Text 是每个开发者工具箱中都应该有的一个强大的应用.它是一个跨平台的.高定制化的.高级的文本编辑器,在功能强大的 集成开发环境(众所周知地消耗资源)和类似于 Vim 或 Emacs ...
- 关于kafka连接不上别的机器问题Connection refused
1.确认config里面的server.properties 正确(包括IP+端口2181记得看清,用hostname的话记得etc/hostnames下面查看全部配置上没,建议用hostname方便 ...
- JS中的自定义属性
<div id="div1" a="a" data-bbb="bbb">div</div> <script&g ...
- 关于setInterval()里的this和细节
setInterval(fn,t);里的fn中,要使用外部类的this,则需要先将this保存起来,再使用保存的this,不能直接使用this,里面的this是指向window对象,记住setInte ...
- Java——交通灯
/* * 交通灯管理系统的 项目需求: * 模拟实现: 十字路口的交通灯系统逻辑, 具体需求如下: * 异步随机生成按照各个路线行驶的车辆. * 信号灯忽略黄灯. 只考虑红灯和绿灯. ...
- c++特性:指向类成员的指针和非类型类模板参数和函数指针返回值 参数推导机制和关联型别
一.c++允许定义指向类成员的指针,包括类函数成员指针和类数据成员指针 格式如下: class A { public: void func(){printf("This is a funct ...
- 递归遍历多维数组(树数据结构)的超级简单方式,并且可以递归超过200层,摘自<<PHP精粹:编写高效PHP代码>>
<?php $array = array( "Hello", // Level 1 array( "World" // Level 2 ), array( ...
- UserDefault的使用,保存小数据到本地-iOS
//保持到本地数据 NSArray *array=@[@"234",@"sdfe"]; NSUserDefaults *userDefault=[NSUserD ...