方法的重载
1.定义
方法的重载就是一个类中允许一个以上同名方法存在,只要这些方法的参数个数或参数类型不同即可。
package classExtends;
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 a + (int) b;
}
public static int add(double a, int b) {
return (int) a + b;
}
public static void main(String[] args) {
System.out.println("调用add(int,int)方法:" + add(1, 2)); //调用add(int,int)方法:3
System.out.println("调用add(double,double)方法:" + add(2.1, 3.2)); //调用add(double,double)方法:5.300000000000001
System.out.println("调用add(int)方法:" + add(2)); //调用add(int)方法:2
System.out.println("调用add(int,double)方法:" + add(2, 2.1)); //调用add(int,double)方法:4
}
}
编译器是通过【方法名+方法各参数类型+参数个数+参数顺序】来确定类中的方法是否唯一。
2.不定长参数
2.1 语法:
返回值 方法名(参数类型...参数名)
在参数列表中使用”...“形式定义不定长参数,其实这个不定长参数a就是个数组,编译器会将”int...a“这种形式看做”int[] a“.
package classExtends;
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 a + (int) b;
}
public static int add(double a, int b) {
return (int) a + b;
}
public static int add(int... a) { //定义不定长参数方法
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum += a[i];
}
return sum;
}
public static void main(String[] args) {
System.out.println("调用add(int,int)方法:" + add(1, 2)); //调用add(int,int)方法:3
System.out.println("调用add(double,double)方法:" + add(2.1, 3.2)); //调用add(double,double)方法:5.300000000000001
System.out.println("调用add(int)方法:" + add(2)); //调用add(int)方法:2
System.out.println("调用add(int,double)方法:" + add(2, 2.1)); //调用add(int,double)方法:4
//调用不定长参数方法
System.out.println("调用不定长参数方法:" + add(1, 2, 3, 4, 5, 6)); //调用不定长参数方法:21
System.out.println("调用不定长参数方法:" + add(1)); //调用不定长参数方法:1
}
}