java中不允许方法重名,而方法重载允许方法重名(编译能通过)
重载规则:
1,方法名相同;
2,参数不同(参数个数或者参数类型)
public class OverLoadTest {
public static int add(int a,int b){
return a+b;
}
public static int add(int a,int b){//报错:add(int,int)已经被定义,即不允许方法重名
return a+b;
}
public static double add(int a,int b){//报错:add(int,int)已经被定义,返回类型不同并不能重载
return a+b;
}
}
上述代码编译会报错:add(int ,int)方法已经被定义,即不允许重名,当改变返回类型为double,仍然报相同错误,说明返回类型不同并不能重载方法,编译不能通过
public class OverLoadTest {
public static int add(int a,int b){
return a+b;
}
/*public static int add(int a,int b){//报错:add(int,int)已经被定义,即不允许方法重名
return a+b;
}
public static double add(int a,int b){//报错:add(int,int)已经被定义,返回类型不同并不能重载
return a+b;
}*/
public static int add(int a){//参数个数不同,编译通过,可以构成重载
return a;
}
public static double add(int a,double b){//参数类型不同,编译通过,可以构成重载
return a+b;
}
public static double add(int... a){//不定长参数方法,编译通过,可以构成重载
int s=0;
for (int i=0;i<a.length;i++){
s+=a[i];
}
return s;
}
public static void main(String[] args) {
System.out.println("调用add(int)方法:"+add(1));//调用add(int)方法:1
System.out.println("调用add(int,int)方法:"+add(1,2));//调用add(int,int)方法:3
System.out.println("调用add(int,double)方法:"+add(1,2.5));//调用add(int,double)方法:3.5
System.out.println("调用不定长参数add(int...)方法:"+add(1,2,3,4,5));//调用不定长参数add(int...)方法:15.0
System.out.println("调用不定长参数add(int...)方法:"+add(2));//调用不定长参数add(int...)方法:2
}
}
着重说一下不定长参数,不定长参数格式为(type... var),var就是一个type类型的数组,按照数组遍历操作var即可