密封类与密封方法
密封类就是将一个类封闭起来,断其子孙的一种方式。书面点说,就是从所修饰的类派生出其他类,所以一个密封类是没有也不能继承的类,因此sealed关键字和abstract关键字不能同时使用。
密封方法则不是为了防止继承而是防止重写,而且它是为了重写基类的虚方法并提供具体的实现,同时防止其后继类(派生类)再次重写该虚方法因此在密封方法中sealed关键字总是和override关键字同时使用。
这些都很简单但是代码总结起来还是不够直观,必须实际感受下:
1 using System;
2
3 namespace SealClassTest
4 {
5 public sealed class SealClass
6 {
7 public static void F()
8 {
9 Console.WriteLine("SealClass.F()");
10 }
11 }
12 /* public class TestSeal : SealClass
13 * { }
14 * error,The compiler's IntelliSense
15 * will not prompt "SealClass",Here just to test */
16 class A
17 {
18 public virtual void F()
19 {
20 Console.WriteLine("A.F()");
21 }
22 public virtual void G()
23 {
24 Console.WriteLine("A.G()");
25 }
26 }
27 class B : A
28 {
29 sealed public override void F()
30 {
31 Console.WriteLine("B.F()");
32 }
33 public override void G()
34 {
35 Console.WriteLine("B.G()");
36 }
37 }
38 class C : B
39 {
40 public override void G()
41 {
42 Console.WriteLine("C.G()");
43 }
44 /*
45 * error :
46 public override void F()
47 {
48 base.F();
49 }*/
50 }
51
52 class Test
53 {
54 public static void Main()
55 {
56 C c = new C();
57 B b = c;
58 A a=new A();
59 b.F();
60 a.F();
61 c.F();
62 Console.ReadKey();
63 }
64 }
65 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?