C#面试题更新 2026-08-05

在C#里,有哪些方式可以防止子类重写一个父类方法?请说明具体的修饰符和实现步骤。

技术原理方案权衡C#

考察说明

考查对C#中方法重写控制机制的理解,包括sealed关键字和私有方法的作用。

回答思路

  1. 【回答框架 1】C#通过sealed关键字阻止方法被重写,将方法声明为sealed,常见于重写方法或虚方法。
  2. 【回答框架 2】若方法非虚,则无法被重写,故可省略virtual;而sealed仅用于阻止继承层级中的进一步重写。
  3. 【回答框架 3】若需阻止任何继承,可将类声明为sealed类,其所有成员均不可被派生类继承。
  4. 【回答框架 4】私有方法也不能被重写,但意义不同,因为派生类不可见,区别于sealed的明确重写控制。
  5. 【关键点 1】使用sealed关键字修饰override方法,防止在派生类中进一步重写。
  6. 【关键点 2】非虚方法天然不可重写,但sealed是显式策略。
  7. 【关键点 3】sealed类防止整个类被继承,是粗粒度控制。
  8. 【关键点 4】private方法不可重写,但更侧重封装而非重写控制。
  9. 【易错点 1】混淆virtual与sealed:只有先virtual或override,sealed才生效。
  10. 【易错点 2】认为sealed方法永不执行:sealed仅阻止重写,不影响调用。
  11. 【易错点 3】不区分sealed方法、sealed类与private方法的适用场景。