密封方法

我们已经知道,使用密封方法可以防止对类的继承。C#还提出了密封方法(sealed method)的概念,以防止在方法所在类的派生类中对该方法的重载。

对方法可以使用sealed修饰符,这时我们称该方法是一个密封方法。

不是类的每个成员都可以作为密封方法,密封方法必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed修饰符总是和override修饰符同时使用。请看例子代码:

程序清单14-7:

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。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索方法
, override
, public
, console
, WriteLine
sealed
机械密封、常用密封方法、密封方式、密封胶、c#密封方法,以便于您获取更多的相关知识。

时间: 2024-07-30 16:45:52

密封方法的相关文章

c#密封类个方法-C#新手在密封类和密封方法处求解

问题描述 C#新手在密封类和密封方法处求解 //程序清单P7_6.csusing System;namespace P7_6{ class Program { static void Main() { BankCard[] cards = new BankCard[] { new BankCard(""001""8888"") new CreditCard(""002""8888"")

c#.-C#新手在密封类和密封方法处的问题

问题描述 C#新手在密封类和密封方法处的问题 上个问题代码排版有问题,这次上图,希望有大神能来解........ 解决方案 抱歉,图片顺序有错.... 解决方案二: C#密封类.密封方法C# 密封类和密封方法

java-Class类的getResourse方法如何理解?

问题描述 Class类的getResourse方法如何理解? Class类有一个getResourse方法,这句URL resourse=this.getClass().getResourse("/img.JPG");怎么理解?有哪位大神详细解释一下. 解决方案 我问的是这条语句如何理解,而不是问路径怎么设置 解决方案二: Class类的常用方法理解java Class类密封类(sealed class)和密封方法(sealedmethod) 解决方案三: /img.jpg表示绝对路径

sealed在C#中的作用说明

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

深入剖析C#继承机制4

继承 2) 隐藏基类成员 想想看,如果所有的类都可以被继承,继承的滥用会带来什么后果?类的层次结构体系将变得十分庞,大类之间的关系杂乱无章,对类的理解和使用都会变得十分困难.有时候,我们并不希望自己编写的类被继承.另一些时候,有的类已经没有再被继承的必要.C#提出了一个密封类(sealed class)的概念,帮助开发人员来解决这一问题. 密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承.如果试图将一个密封类作为其它类的基类,C#将提示出错.理所当然,密封类不能同时又是抽象

C#继承详解

为了提高软件模块的可复用性和可扩充性,以便提高软件的开发效率,我们总是希望能够利用前人或自己以前的开发成果,同时又希望在自己的开发过程中能够有足够的灵活性,不拘泥于复用的模块.今天,任何面向对象的程序设计语言都必须提供两个重要的特性:继承性(inheritance)和多态性(polymorphism). 如果所有的类都处在同一级别上,这种没有相互关系的平坦结构就会限制了系统面向对象的特性.继承的引入,就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加

密封类

想想看,如果所有的类都可以被继承,继承的滥用会带来什么后果?类的层次结构体系将变得十分庞大,类之间的关系杂乱无章,对类的理解和使用都会变得十分困难.有时候,我们并不希望自己编写的类被继承.另一些时候,有的类已经没有再被继承的必要.C#提出了一个密封类(sealed class)的概念,帮助开发人员来解决这一问题. 密封类在声明中使用sealed修饰符,这样就可以防止该类被其它类继承.如果试图将一个密封类作为其它灯的基类,C#将会提示出错.理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承

Unity全面的面试题(包含答案)

这个是我刚刚整理出的Unity面试题,为了帮助大家面试,同时帮助大家更好地复习Unity知识点,如果大家发现有什么错误,(包括错别字和知识点),或者发现哪里描述的不清晰,请在下面留言,我会重新更新,希望大家共同来帮助开发者 一:什么是协同程序? 在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足. 二:Unity3d中的碰撞器和触发器的区别? 碰撞器是触发器的载体,而触发器只是碰撞器身上的一个

漫谈.Net关键字系列之一Sealed与Final

Sealed与Final修饰符其实并不是一个语言平台的产物,他们有着各自所属的语言环境,但这两个关键字都是.Net平台中不可或缺的,那么二者用法几何,随本文一探究竟. 一.Sealed sealed 修饰符可以应用于类.实例方法和属性.用于类时,该类被称为密封类,密封类不能被继承:用于方法时,该方法被称为密封方法,密封方法会重写基类中的方法:sealed修饰符应用于方法或属性时,必须始终与override一起使用:结构是隐式密封的,因此它们不能被继承. ● 描述方法: //Error: cann