方法的重载就是在同一个类中可以同时存在多个同名的方法,只要这些方法的参数或类型不同。方法重载可以使两个方法的返回值不同,但只有返回值还不足以区分两个方法的重载,还需要通过参数的类型、个数、长度来设定。一个简单地例子:
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 void main(String[] args) {
System.out.println("调用add(int,int)方法:"+add(1,2));
System.out.println("调用add(double,double)方法:"+add(1.1,2.3));
}
}
上面的两个方法的名称都为add,都是要实现两个数相加的结果,但其参数类型一个是int类型,一个是double类型,并且其返回值类型也不同,因此这两个add方法就形成了重载关系。重载的情况可以有很多种,以此例子还可以扩充一下:
1 public class OverLoadTest {
2
3 public static int add(int a ,int b){
4 return a+b;
5 }
6 public static double add(double a ,double b){
7 return a+b;
8 }
9 public static int add(int a){
10 return a;
11 }
12 public static double add(int a,double b){
13 return a+b;
14 }
15 public static int add(double a ,int b){
16 return 1;
17 }
18 public static int add(int...a){
19 int sum=0;
20 for(int i=0;i<a.length;i++)
21 sum=sum+a[i];
22 return sum;
23 }
24 public static void main(String[] args) {
25 System.out.println("调用add(int,int)方法:"+add(1,2));
26 System.out.println("调用add(double,double)方法:"+add(1.1,2.3));
27 System.out.println("调用add(int)方法:"+add(5));
28 System.out.println("调用add(int)方法:"+add(1.6,2));
29 System.out.println("调用add(int)方法:"+add(1,2.5));
30 System.out.println("调用不定长add方法:"+add(6,6,6,6,6,6));
31 }
32
33 }
我们可以使用“...”表示不定长的参数,其实就是一个未指定长度的数组,其长度表示a.length,给它一个int型变量,对于这种情况,我们要使用循环语句,返回其和值。基于前面的知识,我们在做这个案例的时候,还需注意数据类型转换的问题,低级类型向高级类型转换,系统会自动执行,但如果高级类型向低级类型转换,需使用强制类型转换,若12行第四个add方法,我们给它的类型为int,系统就会报错,方法中最大类型为double。