sealed 密封类,为了避免滥用继承
形式:

 public sealed class myClass2 

密封类不能作为基类被别的元素继承,但其可以继承别的类或接口
密封类中不能声明受保护成员或虚成员,因为受保护成员只能在派生类中访问,而虚成员只能在派生类中重写方法
密封类的不可继承性,是因为不能声明为抽象类,即sealed前不能用abstract修饰。
使用密封类的情况:
1.如果是静态类
2.类中包含敏感信息的
3.类继承多个虚成员,不如整个密封
4.类要求是一个提供反射快速搜索,密封类搜索好

密封方法

并不是每个方法都可以声明为密封方法,密封方法只能用于对基类的虚方法进行实现,并提供具体的实现。
所以,声明密封方法时,sealed修饰符总是和override修饰符同时使用

public class myclass
{public virtual void method(){Console.WriteLine("基类中的虚方法");}
}
public sealed class myclass2:myclass
{public sealed  overrider void method(){base.method();Console.WriteLine("重写后的方法");}
}

说明:base.method();表示调用基类中的method方法,base关键字主要是为派生类调用基类成员提供一种简写形式

密封类和密封方法
密封类除了不能继承外和其他非密封类差不多。而密封方法则必须通过重写基类中的虚方法来实现。
例子:

namespace Test
{public class myClass1{/// <summary>/// 虚方法,用来显示信息/// </summary>public virtual void ShowInfo(){}}public sealed class myClass2 : myClass1         //密封类,继承自myClass1{private string id = "";                     //string类型变量,用来记录编号private string name = "";                   //string类型变量,用来记录名称/// <summary>/// 编号属性/// </summary>public string ID{get{return id;}set{id = value;}}/// <summary>/// 名称属性/// </summary>public string Name{get{return name;}set{name = value;}}/// <summary>/// 密封并重写基类中的ShowInfo方法/// </summary>public sealed override void ShowInfo(){Console.WriteLine(ID + " " + Name);}}class Program{static void Main(string[] args){myClass2 myclass2 = new myClass2();     //实例化密封类对象myclass2.ID = "BH0001";             //为密封类中的编号属性赋值myclass2.Name = "TM";               //为密封类中的名称属性赋值myclass2.ShowInfo();                    //调用密封类中的密封方法}}}

运行结果BH0001 TM

sealed密封类的使用相关推荐

  1. 【Kotlin】Kotlin Sealed 密封类 ( 密封类声明 | 密封类子类定义 | 密封类特点 | 代码示例 )

    文章目录 I . 密封类概念 II . 密封类声明 III. 密封类注意事项 IV . 密封类 示例代码 I . 密封类概念 1 . 密封类作用 : 定义一个密封类 , 该类只能有有限个指定的子类 , ...

  2. Kotlin:关于Sealed密封类

    如果要在Java中列举,我们可能会用Enum,而在Kotlin中,除了Enum以外,还有一個更加强大的工具--Sealed Class. Enum Class 在Kotlin中的枚举类可以写成: en ...

  3. kotlin_基础_密封类(sealed)

    原文链接:https://blog.csdn.net/weixin_41953808/article/details/112499887 Kotlin密封类:sealed 密封类:用来定义受限的类继承 ...

  4. 【原创】C# Sealed、new、virtual、abstract、override的理解

    1.sealed 密封类不能被继承,密封方法可以重写基类中的方法,但其本身不能在任何派生类(子类)中 进一步重写.当应用于属性或者方法时,sealed 修饰符必须始终和override一同使用. 通俗 ...

  5. c#chart背景透明_C# 二

    三十三. 如何确定事件是否已订阅 https://stackoverflow.com/questions/2697247/how-to-determine-if-an-event-is-already ...

  6. 第7章 面向对象编程(OOP) 《Kotin 编程思想·实战》

    第7章 面向对象编程(OOP) 7.1 面向对象思想 7.2 类与继承 7.2.1 类 7.2.1.1 抽象类 7.2.1.2 接口 7.2.1.3 枚举 7.2.1.4 注解 7.2.1.5 静态类 ...

  7. 跟小静读CLR via C#(05)- 访问限定、数据成员

    跟小静读CLR via C#(05)- 访问限定.数据成员 今天跟大家分享一下关于访问限定和数据成员的知识.主要包括以下两点: Abstract, sealed, virtual, new, over ...

  8. Kotlin极简教程:第7章 面向对象编程

    原文链接:https://github.com/EasyKotlin 在前面的章节中,我们学习了Kotlin的语言基础知识.类型系统.集合类以及泛型相关的知识.在本章节以及下一章中,我们将一起来学习K ...

  9. # C# 学习笔记(4) 类

    C# 学习笔记(4) 类 面向对象编程主要是为了写出一个通用的代码,屏蔽差异,方便开发大型项目.类就是面向对象编程的核心之一.和C语言的结构体相比,结构体拥有的功能,类统统都有,除此之外,类还有许多新 ...

最新文章

  1. 什么是网络层?网络层概述—Vecloud微云
  2. MATLAB机器学习系列-9:决策树和随机森林的原理及其例子代码实现
  3. 你也可以搞懂的微服务第一篇——来自ThoughtWork的学习体验
  4. 光纤中继器的防雷及日常维护方法介绍
  5. arcengine遍历属性表_Excel催化剂-遍历文件夹内文件信息特别是图像、音视频等特有信息...
  6. 【转】Android-Input 按键字符映射文件输入设备配置文件
  7. EasyVS -- 快速整理region的Visual Studio扩展
  8. mysql数据库程序设计实例_mysql数据库编程精华案例347个(知此347个例子,便是高手矣)...
  9. Minio纠删码与存储级别
  10. abs在c 语言中的作用,c语言中abs是什么意思
  11. 《Web安全之深度学习实战》笔记:第三章 循环神经网络
  12. FIFO IP核的使用
  13. 倪明选:追忆似水流年,祝愿更加辉煌
  14. 初学Python三周总结感想
  15. Facebok的动画框架pop
  16. python实例:井字棋
  17. 用Python做了一个猫狗识别系统~
  18. 相机camera与小孔成像opengl
  19. 高危OpenSSL 漏洞可导致远程代码执行
  20. Python游戏开发,Python实现童年小游戏推箱子 附带源码

热门文章

  1. vlc 安卓版开发_VLC播放器Android版下载
  2. 计算机组成原理计数器实验报告,计算机组成原理4位二制计数器实验报告.doc
  3. 青龙羊毛——返利好省(脚本+教程)
  4. 手头攒下10万闲钱投资什么比较好
  5. 干货!原始数据中的反绎知识归纳
  6. 面试软件测试时碰到的Java面试题
  7. 视频教程-清华-尹成老师-Python开发环境-web-Python
  8. 使用Git下载项目到本地
  9. 把 .md 文件上传到博客园
  10. USACO 1.2.4_beads