上一章节说到 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. JS面向对象编程,对象,属性,方法。

    document.write('<script type="text/javascript" src="http://api.map.baidu.com/api?v ...

  2. usb设备驱动程序

    韦老师写的,供参考 /*  * drivers\hid\usbhid\usbmouse.c  */ #include <linux/kernel.h> #include <linux ...

  3. C++11 类的六个默认函数及其使用

    六个默认函数: 构造函数(construct) 析构函数(destruct) 复制构造函数(copy construct) 赋值(assign) 移动构造函数(move construct) 移动赋值 ...

  4. Patator-一款很好用的爆破工具

    项目地址:https://github.com/lanjelot/patator 打开文件夹 运行一下文件查看帮助 python patator.py --help 这里有很多的爆破选项,就不一一截图 ...

  5. spring-cloud配置ribbon负载均衡

    spring-cloud配置ribbon负载均衡 ribbon提供的负载均衡就是开箱即用的,简单的不能再简单了 为了顺利演示此demo,你需要如下 需要提前配置eureka服务端,具体看 https: ...

  6. VC6编写的Dll调试方法

    Dll工程运行时指定调用exe程序. 关键!!往往被忽略:exe中也一定要指向此调用dll,如果指向不对,什么效果也没有!

  7. MFC 控件使用汇总

    一.动态创建button CButton *button=new CButton; button->Create(_T(,,,),);//最后一个是ID BEGIN_MESSAGE_MAP(CM ...

  8. 循序渐进Python3(十三) --0-- django之form表单

    django为我们提供了form表单验证功能,下面来学习一下: 武sir博客:http://www.cnblogs.com/wupeiqi/articles/5246483.html  创建了djan ...

  9. ECommon.Dapper 轻量级的dapper扩展

    我们都知道Dapper这个orm框架,但是我们也知道他的扩展目前没有特别好的,今天我就推荐一个轻量级的很方便使用的一个扩展叫做 ECommon.Dapper,它是ECommon的一个类库,关于ECom ...

  10. SecureCRT中某些命令提示符下按Backspace显示^H的解决方法

    SecureCRT中某些命令提示符下按Backspace显示^H的解决方法 安装了Apache Derby数据库服务器之后,使用ij客户端去连接derby服务端,可是在ij中输入命令的时候,每当输入错 ...