方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可,通过下面的示例来对方法重载进行说明:
public class OverLoadTest {
//定义一个方法
public static int add(int a,int b) {
return a+b;
}
//定义与第一个方法相同名称、参数类型不同的方法
public static double add(double a,double b) {
return a+b;
}
//定义与第一个方法参数个数不同的方法
public static int add(int a) {
return a;
}
//定义一个成员方法
public static int add(int a,double b) {
return 1;
}
//这个方法与前一个方法参数次序不同
public static int add(double a,int b) {
return 2;
}
public static void main(String args[]) {
System.out.println("调用add(int,int)方法:"+add(1,2));
System.out.println("调用add(double,double)方法:"+add(2.1,3.3));
System.out.println("调用add(int)方法:"+add(1));
System.out.println("调用add(int,double)方法:"+add(1,2.3));
System.out.println("调用add(double,int)方法:"+add(2.3,2));
}
}
/*输出结果如下:
调用add(int,int)方法:3
调用add(double,double)方法:5.4
调用add(int)方法:1
调用add(int,double)方法:1
调用add(double,int)方法:2
*/
编译器是利用方法名、方法各参数类型和参数的个数以及参数的顺序来确定类中的方法是否唯一,方法的重载使得方法以统一的名称被管理,是程序代码有条理。
修改上述示例,添加一个不定长参数的方法:
//定义不定长参数方法
public static int add(int...a){
int s = 0;
for(int i=0;i<a.length;i++){
s+=a[i];
}
return s;
}
不定长方法的语法如下:
返回值 方法名(参数数据类型...参数名称)