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