一、引言
在 C# 编程中,重写(override)和重载(overload)是两个重要的概念,它们都涉及到方法的定义和调用,但在具体的实现和作用上有着显著的区别。理解这两个概念的差异对于编写清晰、可维护的 C# 代码至关重要。
二、重写
(一)定义与特点
- 基于继承的行为修改
重写是指在派生类中对基类的虚方法进行重新实现。当一个方法在基类中被声明为虚方法时,派生类可以使用 “override” 关键字来重写这个方法。重写的目的是在派生类中根据具体的需求对基类的方法进行定制化,以实现更特定的行为。 - 方法签名必须一致
重写的方法必须与基类中被重写的方法具有相同的方法签名,包括方法名、参数列表和返回类型。这是为了确保在使用多态性时,能够正确地调用派生类中的重写方法。例如,如果基类中有一个虚方法 “void DoSomething (int parameter)”,那么派生类中的重写方法也必须是 “void DoSomething (int parameter)”。 - 访问修饰符的限制
重写方法的访问修饰符不能比被重写的基类方法更严格。例如,如果基类中的方法是 “protected virtual”,那么派生类中的重写方法可以是 “protected” 或 “public”,但不能是 “private”。