C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > c# sealed修饰符

C#中的sealed修饰符的作用详解

作者:Charles_go

在 C# 中,sealed 修饰符的作用是 “密封”用来阻止类被继承,或者阻止方法/属性在派生类中被重写,接下来通过本文给大家介绍C#中的sealed修饰符的作用详解,感兴趣的朋友一起看看吧

在 C# 中,sealed 修饰符的作用是 “密封” —— 用来阻止类被继承,或者阻止方法/属性在派生类中被重写

✅ 1.sealed用于类(class)

作用:

示例:

public sealed class FinalClass
{
    public void DoWork() { }
}
// ❌ 编译错误!不能继承 sealed 类
public class DerivedClass : FinalClass 
{
}

💡 常见用途:

  • 设计上不希望被扩展的类(如工具类、值对象)
  • 提高性能(JIT 编译器对 sealed 类有优化)
  • .NET 中很多内置类型是 sealed 的,比如 stringDateTime

✅ 2.sealed用于方法或属性(必须与 override 一起用)

作用:

示例:

public class Base
{
    public virtual void Say() => Console.WriteLine("Base");
}
public class Middle : Base
{
    // 重写 Say,并密封它
    public sealed override void Say() => Console.WriteLine("Middle (sealed)");
}
public class Child : Middle
{
    // ❌ 编译错误!Say() 已被 sealed,不能再重写
    // public override void Say() { }
}

🔔 注意:

  • sealed 修饰方法时,必须同时使用 override
  • 不能直接对非虚方法加 sealed

📌 为什么使用sealed?

场景原因
防止滥用继承有些类设计为“最终版本”,不希望被随意扩展
安全性避免子类破坏原有逻辑(尤其在库开发中)
性能优化JIT 编译器可以对 sealed 类做内联等优化
明确设计意图表达“这个类到此为止”的语义

⚠️ 常见误区

错误:以为 sealed 类不能有虚方法
正解sealed可以有虚方法,但它自己不能被继承,所以这些虚方法实际上也无法被重写(因为没子类)。

错误sealed 方法可以单独使用
正解sealed 方法必须搭配 override,不能单独修饰一个普通方法。

✅ 小结

用法含义
sealed class MyClass该类不能被继承
sealed override void MyMethod()该方法在当前类是最终版本,子类不能再重写

💡 记住口诀:“sealed = 到此为止,不准再改”

如果你正在设计一个工具类(比如 MathHelper),并且确定不需要继承,就可以把它声明为 sealed

public sealed class MathHelper
{
    public static int Add(int a, int b) => a + b;
    // 没有实例成员,也不需要继承 → 用 sealed 很合适
}

问题

如何防止类被继承?或者让类继承但是防止其某些方法被重写?

使用sealed修饰符

到此这篇关于C#中的sealed修饰符的作用详解的文章就介绍到这了,更多相关c# sealed修饰符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文