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面试题及答案-填空题
Apr 26 面试题
说出数据连接池的工作机制是什么?
Apr 19 面试题
请介绍一下Ant
Jul 22 面试题
怎样声明接口
Sep 19 面试题
C语言基础笔试题
Apr 27 面试题
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
Aug 04 面试题
将"引用"作为函数参数有哪些特点
Apr 05 面试题
在什么时候需要使用"常引用"
Dec 31 面试题
Shell如何接收变量输入
Sep 24 面试题
企业面试题试卷附带答案
Dec 20 面试题
Java Servlet的主要功能和作用是什么
Feb 14 面试题
什么是servlet
May 08 面试题
维德科技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
将OICQ数据转成MYSQL数据
2006/10/09 PHP
php 动态添加记录
2009/03/10 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
python缩进区别分析
2014/02/15 Python
Python查找相似单词的方法
2015/03/05 Python
Python base64编码解码实例
2015/06/21 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
Python3实现转换Image图片格式
2018/06/21 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
Python之时间和日期使用小结
2019/02/14 Python
python操作kafka实践的示例代码
2019/06/19 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
2015年班级元旦晚会活动总结
2014/11/28 职场文书
小学信息技术教学反思
2016/02/16 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
Python实现位图分割的效果
2021/11/20 Python