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

在 C# 中,virtual 关键字用于声明虚方法,它使得派生类可以对基类的方法进行重写。请解释 virtual 关键字的功能,并阐述方法重写的具体实现步骤。

技术原理C#

考察说明

考查对 C# 面向对象多态性中虚方法与重写机制的理解。

回答思路

  1. 【回答框架 1】virtual 关键字用于在基类中声明可重写的方法,表明该方法可以在派生类中被重新实现。它允许派生类根据自身需要改变方法行为,是实现运行时多态的基础。
  2. 【回答框架 2】方法重写需要满足条件:派生类方法必须使用 override 关键字,且基类方法必须为 virtual、abstract 或 override。重写方法的访问修饰符、返回类型、方法签名必须与基类虚方法一致。
  3. 【回答框架 3】调用时,如果通过基类引用指向派生类对象,将调用实际对象类型的重写方法,而非引用类型的方法。这就是多态的表现。
  4. 【回答框架 4】如果不使用 virtual 和 override,而是使用 new 隐藏基类方法,则调用时根据引用类型决定,无法实现多态。
  5. 【回答框架 5】注意 sealed 关键字可以阻止进一步重写,而抽象方法(abstract)没有实现,必须在派生类中重写。
  6. 【关键点 1】virtual 使方法可被派生类重写,实现多态。
  7. 【关键点 2】重写必须使用 override,且签名和返回类型一致。
  8. 【关键点 3】基类引用调用派生类重写的方法,实现多态。
  9. 【关键点 4】new 关键字隐藏方法,不构成重写。
  10. 【易错点 1】使用 new 隐藏方法但期望多态行为,将导致调用基类版本。
  11. 【易错点 2】重写方法时访问修饰符或签名不一致,会导致编译错误。
  12. 【易错点 3】混淆 virtual 方法调用和抽象方法实现,抽象方法必须在派生类中实现。