一个类中可以有一个以上的方法拥有相同的名称,这叫做方法重载(method overload)。使用相同名称的每个方法必须有一个和其他方法不同的签名。
方法的签名由以下信息组成,它们在方法声明的方法头中:
①方法名称;
②参数的数目;
③参数的数据类型和顺序;
④参数修饰符。
注意:返回类型不是签名的一部分,而我们容易误认为它是签名的一部分;还有形参的名称也不是签名的一部分。
例如:下面4个方法是方法名AddValues的重载:
class A
{
long AddValues(int a, int b) { return a +b; }
long AddValues(int c, int d, int e) { return c + d + e; }
long AddValues(float f, float g) { return (long)(f + g); }
long AddValues(long h, long m) { return h + m; }
}
下面代码展示了一个非法的重载方法。两个方法仅仅返回类型和形参名不同,但它们仍有相同的签名,因为它们有相同的方法名,而且参数的数目、类型和顺序也相同。编译器会对这条代码生成一条错误信息。
class B
{
long AddValues(long a, long b) { return a + b; }
int AddValues(long c, long d) { return c + d; }
}
注意:方法重载与继承中的“方法覆写”是两个不同的概念,不能够将它们混淆。