sealed在C#中的作用说明

sealed关键字的作用:
在类声明中使用sealed可防止其它类继承此类;在方法声明中使用sealed修饰符可防止扩充类重写此方法。
  sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
密封类:
密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承。如果试图将一个密封类作为其它类的基类,C#将提示出错。理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。
  在哪些场合下使用密封类呢?实际上,密封类中不可能有派生类。如果密封类实例中存在虚成员函数,该成员函数可以转化为非虚的,函数修饰符virtual 不再生效。
  让我们看下面的例子:
复制代码 代码如下:

abstract class AbstractClass
{
public abstract void Method( ) ;
}
sealed class SealedClass: AbstractClass
{
public override void Method( )
{ //... }
}

  如果我们尝试写下面的代码
class OtherClass: SealedClass
{
}

  C#会指出这个错误,告诉你SealedClass 是一个密封类,不能试图从SealedClass 中派生任何类。
密封方法:
C#还提出了密封方法(sealedmethod) 的概念,以防止在方法所在类的派生类中对该方法的重载。对方法可以使用sealed 修饰符,这时我们称该方法是一个密封方法。
  不是类的每个成员方法都可以作为密封方法密封方法,要作为密封方法必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed 修饰符总是和override 修饰符同时使用。请看下面的例子代码:
复制代码 代码如下:

using System ;
class A
{
public virtual void F( )
{
Console.WriteLine("A.F") ;
}
public virtual void G( )
{
Console.WriteLine("A.G") ;
}
}
class B: A
{
sealed override public void F( )
{
Console.WriteLine("B.F") ;
}
override public void G( )
{
Console.WriteLine("B.G") ; }
}
class C: B
{
override public void G( )
{
Console.WriteLine("C.G") ;
}
}

类B 对基类A 中的两个虚方法均进行了重载,其中F 方法使用了sealed 修饰符,成为一个密封方法。G 方法不是密封方法,所以在B 的派生类C 中,可以重载方法G,但不能重载方法F

时间: 2024-10-28 05:58:34

sealed在C#中的作用说明的相关文章

sealed在C#中的作用说明_实用技巧

sealed关键字的作用: 在类声明中使用sealed可防止其它类继承此类:在方法声明中使用sealed修饰符可防止扩充类重写此方法. sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化.具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理. 密封类: 密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承.如果试图将一个密封类作为其它类的基类,C#将提示出错.理所当然,密封类不能同时又是抽象类,因为抽象

float是什么?浮动在CSS中的作用

文章简介:float深入剖析. float是什么? float即为浮动,在CSS中的作用是使元素脱离正常的文档流并使其移动到其父元素的"最左边"或"最右边".下面解释下这个定义中的几个名词的概念: 文档流:在html中文档流即为元素从上至下排列的顺序. 脱离文档流:元素从正常的排列顺序被抽离. 最左边/最右边:上述的移动到父元素最左和最右是指元素往左或往右移动直到碰到另一个浮动元素或父元素内容区的边界(不包括padding). float造成的影响 对其父元素的影响

TAG标签在SEO优化中的作用

1.TAG标签是什么 很多人还不了解沈阳SEO优化中TAG标签具体是什么东西,对网站沈阳SEO优化又会带来什么样的影响,首先我网站用的CMS里面已经有了添加TAG标签的功能,但是沈阳SEO优化一直以来应用的并不是十分充分,有的时候是空着,有的时候就直接写关键词,这对于一个健康的网站沈阳SEO优化来说也许是不会带来什么fu/mian的影响的,那么这个TAG标签究竟有什么作用呢? TAG标签与关键词有着同样的重要的地位,我认为关键词是写给搜索引擎看的,而TAG标签针对的却是用户,是直接的浏览者.很多

谈谈逆向思维在网站优化中的作用

站长界每天有很多新站诞生,然而伴随的是很多老站胎死腹中.老站有这样的结局很大程度上是因为这些站太古老,墨守成规,总之是思路不对;那是不是我们就应该创新呢?创新固然好,但笔者认为创新是行业领军人物的事情,我们所做的就站在旧思路的肩膀上用逆向思维的方式打破胎死腹中的传说,本文就逆向思路在网站优化过程中的作用对这种观点进行简单论证. 使用逆向思维实现建站 不管是新站长还是老站长几乎都是这样的建站思维:即先找个产品或服务类型建个网站,然后通过网站优化或其他方式实现流量导入,最后通过挂广告的方式实现盈利;

实战浅析分析网站tags标签在SEO中的作用

关于网站tags标签的文章,在网络有许多,但是都是纸上谈兵,今天放弃就用实战的形势展现出tags的强大之处.Tags能给我们带来什么?收录是站长朋友们一直关注的焦点,那么tags就能给站长带来巨大的收录量,那么它是如何给网站带来收录量的呢? 下面我们就用历趣手机下载站分析,首先上一张历趣的网站收录截图.   (案例网站百度收录截图) 相信270余万的收录不少了吧,今天就抛开其他因素,我们只分析历趣的tags标签.看了许多站点,包括强哥的www.yijie029.com他的tags标签都是以动态的

元数据(metadata)在企业应用开发中的作用

数据 元数据(metadata)在企业应用开发中的作用 元数据(metadata)介绍:Metadata(元数据),它是"关于数据的数据"(data about data),近年来在软件设计中Metadata有广泛的应用.在编程中,元数据不是被处理的对象,而是通过改变元数据的一些"值"来改变程序的运行的数据.可以"解释"程序的运行时,不同的元数据值可以让同一段程序有不同的运行结果.元数据(metadata)应用: 在以前的工作中,经常遇到这样的问

SQL Server日志在高可用和灾难恢复中的作用

简介 日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性.本篇文章主要讲述日志在SQL Server中提供的几种高可用性中的作用以及在灾难恢复中的角色. 日志损坏 日志可能会由于IO子系统的故障而损坏,当出现日志损坏时,如果您对日志的原来略有了解,并能在日志损坏的情况下尽量挽救数据,那么感觉一定是非常好的:-),下面我们来了解几种日志损坏的情况下的恢复情况. 1.数据库正常

缓存在SSD中的作用

  随着SSD固态硬盘的普及,如今带有缓存的SSD价格也逐渐被用户接受,虽然我们知道没有缓存的SSD在价格上会比有缓存的略贵一些,但是缓存究竟在SSD固态硬盘中发挥了怎样的作用并不是每个用户都了解. 其实"缓存"一词单纯从字面上理解可解释为延缓存放,简单的说"缓存"是为了平衡高速设备和低速设备之间的速度差异而存在的.作用是让低速设备尽量的不拖高速设备的后退.这里之所以用"尽量"一词,主要是各类产品中的缓存容量有限,算法也不可能100%的准确命中,

wakelock在android中的作用

问题描述 wakelock在android中的作用 看到android的源码里面有wakelock,一直不知道是什么意思,想请问下 解决方案 Android WakelockAndroid: wakelockAndroid WakeLock 介绍 解决方案二: Android为了确保应用程序中关键代码的正确执行,提供了Wake Lock的API,使得应用程序有权限通过代码阻止AP进入休眠状态. http://blog.csdn.net/ryantang03/article/details/862