java重载与可变形参
1.方法的重载
1.1 方法的重载的概念
在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
“两同一不同”:
同一个类、相同方法名;
参数列表不同:参数个数不同,参数类型不同
1.2 举例
1.2.1 构成重载的举例
举例一:
Arrays类中重载的sort()/binarySearch();PrintStream中的println()
举例二:
//如下的4个方法构成了重载
public void getSum(int i,int j){
System.out.println("1");
}
public void getSum(double d1,double d2){
System.out.println("2");
}
public void getSum(String s,int i){
System.out.println("3");
}
public void getSum(int i,String s){
System.out.println("4");
}
1.2.2 不构成重载的举例
//如下的3个方法不能与上述4个方法构成重载
public int getSum(int i,int j){
return 0;
}
public void getSum(int m,int n){
}
private void getSum(int i,int j){
}
1.3 如何判断是否构成方法的重载
严格按照定义判断,“两同一不同”。
跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系
1.4 如何确定类中某一个方法的调用
方法名---->参数列表
1.5 经典面试题
方法的重载与重写的区别?
- 重载发生在本类,重写发生在父类与子类之间;
- 重载的方法名必须相同,重写的方法名相同且返回值类型必须相同;
- 重载的参数列表不同,重写的参数列表必须相同。
2. 可变形参
2.1 使用说明
- 可变个数形参的格式:数据类型 … 变量名
- 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个,…
- 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
- 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载,换句话说,二者不能共存。
- 可变个数形参在方法的形参中,必须声明在末尾
- 可变个数形参在方法的形参中,最多只能声明一个可变形参。
2.2 举例说明
public void show(int i){
}
public void show(String s){
System.out.println("show(String)");
}
public void show(String ... strs){
System.out.println("show(String ... strs)");
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]);
}
}
//不能与上一个方法同时存在
public void show(String[] strs){
}
2.3 调用
test.show("hello");
test.show("hello","world");
test.show();
test.show(new String[]{"Aa","Bb","Cc"});