上一章节说到 sealed  作用于类,那么sealed 作用到方法和成员上面该如何呢。

在C# 中 Sealed作用于方法必须是重写之后的方法。也就是override+sealed。在之后别的类在继承此类时就无法在重写这个方法。

比较绕。

换句说,如果你这个方法是重写的,那么继承此类时还可以重写。

也就是 对重写进行重写。

 class Father
{
public virtual int Money => ;
public virtual void Company()=>Console.WriteLine("I Get a Company");
public virtual void WhoIam() => Console.WriteLine("我是爸爸");
} class Son : Father
{ public Son() => Console.WriteLine($"爸爸给了我{Money}块钱"); public override void WhoIam() => Console.WriteLine("我是儿子");
}
class Grandson :Son
{
public override void WhoIam() => Console.WriteLine("我是孙子"); public Grandson()=> Console.WriteLine($"爸爸给了我{Money}块钱");
}

那么 son不想别人再次重写的这个whoiam的方法时就是使用sealed这个密封。

代码:

 class Father
{
public virtual int Money => ;
public virtual void Company()=>Console.WriteLine("I Get a Company");
public virtual void WhoIam() => Console.WriteLine("我是爸爸");
} class Son : Father
{ public Son() => Console.WriteLine($"爸爸给了我{Money}块钱"); public sealed override void WhoIam() => Console.WriteLine("我是儿子");
}
class Grandson :Son
{
public override void WhoIam() => Console.WriteLine("我是孙子");//此处代码报错 public Grandson()=> Console.WriteLine($"爸爸给了我{Money}块钱");
}

同样这个方式也可以作用于属性上面。

C# 密封(2)的更多相关文章

  1. ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)

    前面提到 ES5 对象属性描述符,这篇看看对象的扩展.密封和冻结. 扩展对象 Object.preventExtensions Object.isExtensible 密封对象 Object.seal ...

  2. 【jq】c#零基础学习之路(4)抽象类和密封

    一.抽象类 1.抽象类不能被实例化 2.抽象类方法必需要实现 3.如何类中函数为抽象函数,其类也需要定义成抽象类 4.关键字 abstract ,函数重写 override. 二.密封类 1.密封类不 ...

  3. C#密封类和密封方法--C#基础

    1.密封类 1)不是所有的类都可以继承,不能别继承的类叫做密封类.如果一个类不希望被继承.被派生可以采用关键字sealed,下面Class2不能继承Class1 Class1.cs: namespac ...

  4. (sealed)密封类及密封方法优缺点

    1. 密封类防止被继承 (有利于代码优化, 由于密封类的不被继承性, 代码在搜索此方法时可以直接定位, 不需要一层层的找继承关系) 只有本程序集可以使用 2. 密封类中不需要再写密封方法(一般密封方法 ...

  5. javascript的密封对象之seal(),isSealed()方法

    EcmaScrip5t中出现了密封对象概念.密封对象不可扩展,而已有的成员的[Configurable]特性被设置为false.也就是说属性和方法是不能删除的.但是是可以修改的. 示例一: var p ...

  6. js Object 的冻结、密封、扩展的相同以及不同点

    Object.freezed() 冻结 检查函数 Object.isFrozen(obj) Object.seal() 密封   检查函数 Object.isSealed(obj) Object.pr ...

  7. c# 第40节 密封类、密封方法

    本节内容: 1:密封的存在意义 2:密封方法的实现 1:密封的存在意义 2:密封方法的实现 class2::父类 class Class2 { public virtual void show() { ...

  8. JS对象-不可扩展对象、密封对象、冻结对象

    不可扩展对象 Object.preventExtensions() 仅阻止添加自身的属性.但属性仍然可以添加到对象原型. 可以用 Object.isExtensible(obj) 来判断对象是否可扩展 ...

  9. 密封关键字sealed

    在两种情况下使用: ·不想让别人继承:例如public sealed class Person{}; ·不想让子类重写自己的方法 例如: public class Person{ public vis ...

随机推荐

  1. php中的move_uploaded_file

    1.定义和用法 move_uploaded_file() 函数将上传的文件移动到新位置. 若成功,则返回 true,否则返回 false. 2.语法 move_uploaded_file(file,n ...

  2. C++11 变量和函数的链接性

    在全局变量前添加const或者static,则该变量链接性为内部,即文件内有效.可以使用extern声明为外部. 如果要让函数的链接性为内部,则函数声明和定义都应使用static关键字. 例子: te ...

  3. webapi help文档 添加测试功能

    在做webapi项目的时候 webapi为我们提供了help文档,开发者可以参考这个文档,但是这个文档缺少测试功能,如果加上一个测试的功能就更加方便了 于是就研究了下写了一段代码,代码比较简单,只要将 ...

  4. 浅谈oracle事务

    所谓事务,他是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元.通俗解释就是事务是把很多事情当成一件事情来完成,也就是大家都在一条船上,要死一起死,要活一起活. 为什么要引入事 ...

  5. HDR

    [HDR] 什么是 HDR? 高动态范围拍摄(HDR)现在已经得到广泛使用,被用来补偿大多数数码成像传感器有限的动态范围.照片的动态范围是指最暗的色彩与最亮的色彩之间的亮度范围——也可以一并表示色调范 ...

  6. sql server2008 跨服务器之间复制表数据

    首先2个数据库要能互相访问,在本地数据库用 select * into 新表 from opendatasource('SQLOLEDB','Data Source=远程数据库IP;User ID=用 ...

  7. codeforce468DIV2——D. Peculiar apple-tree

    题意给你一颗树,开始时每个结点都有一个小球,每一秒钟每个小球都往上滚一层,当两个球在同一个结点的时候会被消去,如果三个五个七个等在同一个结点的化消去后只剩一个. 分析 这对我来说就TM是英语阅读理解哇 ...

  8. gdb 调试PHP

    扩展编译好用,通过php编码测试报“段错误",如果是c语言都是用gdb进行设置,那php扩展要如何进行调试呢?搜索了下,虽然是php扩展但是core是php 的core不是单个so扩展的co ...

  9. 张超超OC基础回顾03_结构体类型作为成员变量的特殊用法

    直接上例子: 要求: 合理的设计一个”学生“类 学生有* 姓名* 生日两个属性和说出自己姓名生日方法  要求利用设计的学生类创建学生对象,并说出自己的姓名和年龄 描述学生类 事物名称: 学生(Stud ...

  10. css 样式文字溢出显示省略号

    在table中使用溢出样式,table样式要设置为”table-layout: fixed“,即<table style="table-layout: fixed;"> ...