方法签名由方法名称和一个参数列表(方法的参数顺序和类型)组成。
注意:方法的签名并不包括方法的返回值。虽然每个重载方法可以有不同的返回类型,单返回类型并不足以区分所条用的是哪个方法。
在C#中,同一个类中的两个或两个以上的方法可以有不同的名字,只要他们的参数声明不同即可。在这种情况下,该方法就被称为重载(overload),这个过程称为方法重载(method overloading)。方法重载是C#最有用的特性之一。
当一个方法被调用时,C#用方法签名确定调用哪一个方法。因此,每个重载方法的参数列表必须是不同的。虽然每个重载方法可以有不同的返回类型,单返回类型并不足以区分所条用的是哪个方法。当C#调用一个重载方法时,参数与条用参数相匹配的方法被执行。
重写(override)是指,派生类对基类的方法的实现进一步改进。
- 不能重写非虚方法或静态方法。重写的基方法必须是 virtual、abstract 或 override 的。为什么 override 也可以重写呢?因为基类中的 override 实际上是对基类的基类进行的重写,由于继承可传递,所以也可以对基类中 override 的方法进行重写。
- override 声明不能更改 virtual 方法的可访问性。override 方法和 virtual 方法必须具有相同的访问级别修饰符。
- 不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。
- 重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或 override 的。