sealed修饰符是干什么的
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
用于类时,表示该类不能再被继承,不能和 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
【sealed修饰符是干什么的】相关文章
2. new修饰符是起什么作用
5. Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
6. 托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
7. 我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
8. 介绍一下javax.servlet.Servlet接口及其主要方法
9. Java Servlet API中forward() 与redirect()的区别
10. 什么是UTL_FILE, 她相关的Procedure和函数都有什么
本文来源:https://www.mianshiwenti.com/a12991.html
进入下载页面
上一篇:C#和SQL Server的面试题
下一篇:C#软件工程师英语面试题
﹝sealed修饰符是干什么的﹞相关内容
- 别名指示符是什么
- 什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
- OLEDBConnection和SQLConnection有什么区别
- Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
- 软件测试LoadRunner面试题:If web server, database and Network are all fine where could be the problem?
- Credit Suisse瑞士信贷面试经验
- 软件测试LoadRunner面试题:How did you find web server related issues?
- 简述你对Statement,PreparedStatement,CallableStatement的理解
- OracleDBA数据库结构试题精选
- 有abstract方法的类一定要用abstract修饰吗