sealed关键字用于限制类继承或方法重写:修饰类时禁止继承,修饰重写方法时禁止进一步重写;适用于最终实现类、最优方法实现及安全敏感场景。

sealed 关键字在 C# 中用于限制类的继承或方法的重写,增强代码的安全性和设计意图的表达。它可以直接修饰类或虚方法,具体作用根据使用位置不同而有所区别。
防止类被继承
当 sealed 修饰一个类时,该类不能被其他类继承。试图继承 sealed 类会导致编译错误。这在你希望某个类的设计保持不变、不希望被扩展时非常有用,比如一些工具类或安全敏感类。- 示例:
sealed class UtilityClass
{
public void DoWork()
{
// 实现逻辑
}
}
// 下面这行代码会引发编译错误:
// class Derived : UtilityClass { } // 错误:无法继承 sealed 类
防止方法被重写
当 sealed 与 override 一起使用时,它可以密封一个重写的方法,使其在派生类中不能再被进一步重写。这种用法通常出现在类的继承链中,用于“终止”某个虚方法的多态传播。- 示例:
class BaseClass
{
public virtual void Show()
{
Console.WriteLine("BaseClass.Show");
}
}
class DerivedClass : BaseClass
{
public sealed override void Show()
{
Console.WriteLine("DerivedClass.Show");
}
}
class FinalClass : DerivedClass
{
// 下面这行代码会引发编译错误:
// public override void Show() { } // 错误:无法重写 sealed 方法
}
使用场景建议
使用 sealed 可以明确表达设计意图,避免意外的继承和重写,提升性能(JIT 编译器可能对 sealed 类做更多优化),并增强安全性。但也要注意,过度使用会降低代码的可扩展性,应根据实际需求权衡。- 适合使用 sealed 的情况:
- 类是最终实现,不需要也不允许被扩展
- 重写的方法已经是最优实现,不应再被修改
- 出于安全考虑,防止恶意继承篡改行为
基本上就这些。sealed 关键字虽小,但在控制继承结构上作用明显。










