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...

面试题 相关文章推荐
Ibatis如何调用存储过程
May 15 面试题
类的核心特性有哪些
Jan 01 面试题
Java提供了哪些企业应用编程接口
Feb 13 面试题
"序列点" 是什么
Jul 29 面试题
中海讯通笔试题
Sep 15 面试题
.NET是怎么支持多种语言的
Feb 24 面试题
网络工程师面试(三木通信技术有限公司)
Jun 05 面试题
AJAX的优缺点都有什么
Aug 18 面试题
介绍一下Python下range()函数的用法
Nov 07 面试题
Java编程面试题
Apr 04 面试题
Overload和Override的区别
Sep 02 面试题
DTD的含义以及作用
Jan 26 面试题
维德科技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
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
浅谈$('div a') 与$('div>a')的区别
2016/07/18 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
深入理解python中的atexit模块
2017/03/07 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
五好文明家庭事迹材料
2014/12/20 职场文书
大学生团员个人总结
2015/02/14 职场文书