方法重载
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即可