sealed修饰符是干什么的


Posted in 面试题 onOctober 23, 2012
sealed 修饰符表示密封
用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥
用于方法和属性时,表示该方法或属性不能再被继承,必须和 override 关键字一起使用,因为使用 sealed 修饰符的方法或属性肯定是基类中相应的虚成员
通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱
恰当的利用 sealed 修饰符也可以提高一定的运行效率,因为不用考虑继承类会重写该成员
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example06
{
class Program
{
class A
{
public virtual void F()
{
Console.WriteLine(“A.F”);
}
public virtual void G()
{
Console.WriteLine(“A.G”);
}
}
class B : A
{
public sealed override void F()
{
Console.WriteLine(“B.F”);
}
public override void G()
{
Console.WriteLine(“B.G”);
}
}
class C : B
{
public override void G()
{
Console.WriteLine(“C.G”);
}
}
static void Main(string[] args)
{
new A().F();
new A().G();
new B().F();
new B().G();
new C().F();
new C().G();
Console.ReadLine();
}
}
}

结果:
类 B 在继承类 A 时可以重写两个虚函数
由于类 B 中对 F 方法进行了密封, 类 C 在继承类 B 时只能重写一个函数
控制台输出结果,类 C 的方法 F 只能是输出 类B 中对该方法的实现:
A.F
A.G
B.F
B.G
B.F
C.G

Tags in this post...

面试题 相关文章推荐
PHP如何防止SQL注入
May 03 面试题
Java里面有没有全局变量?为什么?
Feb 06 面试题
serialVersionUID具有什么样的特征
Feb 20 面试题
益模软件Java笔试题
Mar 27 面试题
华为的Java面试题
Mar 07 面试题
不开辟用于交换数据的临时空间,如何完成字符串的逆序
Dec 02 面试题
什么是Smart Navigation?
Jul 03 面试题
Linux上比较文件的命令都有哪些
Feb 24 面试题
介绍一下EJB的体系结构
Aug 01 面试题
如何用Python来进行查询和替换一个文本字符串
Jan 02 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
Oct 22 面试题
Delphi软件工程师试题
Jan 29 面试题
维德科技C#面试题笔试题
Dec 09 #面试题
C#实现启动一个进程
Oct 01 #面试题
C#笔试题
Jul 14 #面试题
C#和SQL Server的面试题
Aug 12 #面试题
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
Jul 23 #面试题
成都思必达公司C#程序员招聘面试题
Jun 26 #面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
Oct 15 #面试题
You might like
德生1994机评
2021/03/02 无线电
php通过COM类调用组件的实现代码
2012/01/11 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
国际贸易专业推荐信
2013/11/15 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android