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

请解释 C# 中的方法重载与方法重写,并阐述它们的区别及适用场景。

考察说明

考查对 C# 面向对象中方法重载与方法重写概念的掌握,以及区分静态多态和动态多态的能力。

回答思路

  1. 【回答框架 1】方法重载发生在同一个类中,多个方法同名但参数列表不同(参数个数、类型或顺序),与返回类型无关。编译器在编译时根据实参选择匹配的方法,属于编译时多态。
  2. 【回答框架 2】方法重写发生在继承关系中,子类使用 override 关键字重写父类中标记为 virtual 或 abstract 的方法。重写的方法必须具有相同的方法签名和返回类型,运行时根据对象的实际类型调用对应的实现,属于运行时多态。
  3. 【回答框架 3】重载用于提供对同一操作的不同参数处理,如 Console.WriteLine 的多种重载;重写用于扩展或改变父类行为,是实现多态和模板方法模式的基础。
  4. 【回答框架 4】重载时,如果仅返回类型不同而参数列表相同,则编译错误,因为无法仅凭返回类型区分重载。重写时,父类方法必须可被重写,且访问修饰符不能降低可见性。
  5. 【关键点 1】重载:同类中同名不同参数,编译时多态。
  6. 【关键点 2】重写:子类重写父类虚方法,运行时多态。
  7. 【关键点 3】重写要求父类方法为 virtual 或 abstract。
  8. 【关键点 4】重载与返回类型无关,仅参数列表决定。
  9. 【易错点 1】将重写误认为是重载,或反之。
  10. 【易错点 2】忽视重载时返回类型不参与区分。
  11. 【易错点 3】使用 new 关键字隐藏基类方法,与重写混淆。