即参数列表不同,参数个数不同,参数类型不同方能构成方法重载!
与修饰符类型、返回值类型、形参的命名没有关系!
比如:
public void getSum(int i,int j){
}
与其不构成方法重载的方法有:
public int getSum(int i,int j){
return 0;
}
private void getSum(int i,int j){
}
public void getSum(int a,int b){
}
以上三个方法都不构成方法重载!
在现在的JDK中,新增了几个初始化方法:
public void show(int i){
}
public void show(String s){
}
public void show(String...str){
}
// public void show(String[] str){
//
// }
前三种构成了方法重载,第二种是输入一个String类型的字符串
而第三种是可以输入很多个String类型的字符串
但是如果有了第三种,那么第四种方法就不能存在,因为第三和第四种是等价的
在以前的JDK中,如果想输入多个字符串,那么就只能用第四种方法,即开辟一个数组来储存
在新版本的JDK中,可以直接利用第三种方法进行多个字符串的输入
而这两种是等价的!
还有一点要注意
当想输入多个String类型的字符串和其他类型的变量时,就必须要将:String...str
放在最末尾
比如:
// public void show(String...str,int i){
//
// }
public void show(int i,String...str){
}
必须是这样写的,第一种写法会报错!
因此按照这个说法,这个可变个数的形参就只能在方法中声明一个!
因为声明多个必定就会导致有的在前面,所以只能声明一个可变个数的形参。
原文:https://www.cnblogs.com/DiamondDavid/p/13893388.html