C# 重写与重载的关系
时间: 2024-09-06 17:04:43 浏览: 57
在C#中,重写(Override)和重载(Overload)是两个密切相关但不同的概念。
**重载**是指在同一类型的类(通常是类内部)中,可以有多个同名的方法,但是它们的参数列表不同,包括参数的数量、类型或顺序。编译器会根据调用时传递的实际参数来决定调用哪个方法。例如:
```csharp
public void Print(int value) { Console.WriteLine(value); }
public void Print(string text) { Console.WriteLine(text); }
```
在这个例子中,`Print`方法因为接收参数类型的不同而被重载。
**重写**则发生在继承关系中,子类提供对父类中某个虚方法(使用`virtual`, `override`关键字声明)的自己的实现。当在子类的对象上调用这个方法时,实际执行的是子类提供的代码。例如:
```csharp
class BaseClass {
public virtual void Display() { Console.WriteLine("BaseClass.Display"); }
}
class DerivedClass : BaseClass {
override public void Display() { Console.WriteLine("DerivedClass.Display"); }
}
```
在这里,`DerivedClass`通过`override`关键字重写了`BaseClass`的`Display`方法。
阅读全文