原因:
看一下这个例子
1 public class MethodDemo02 { 2 public static void main(String[] args) { 3 // 下面是针对求和方法的调用 4 int sum1 = add01(1, 2); 5 int sum2 = add02(1, 2, 3); 6 double sum3 = add03(1.2, 2.3); 7 // 下面的代码是打印求和的结果 8 System.out.println("sum1=" + sum1); 9 System.out.println("sum2=" + sum2); 10 System.out.println("sum3=" + sum3); 11 } 12 13 // 下面的方法实现了两个整数相加 14 public static int add01(int x, int y) { 15 return x + y; 16 } 17 // 下面的方法实现了三个整数相加 18 public static int add02(int x, int y, int z) { 19 return x + y + z; 20 } 21 // 下面的方法实现了两个小数相加 22 public static double add03(double x, double y) { 23 return x + y; 24 } 25 }
从上述代码不难看出,程序需要针对每一种求和的情况都定义一个方法,如果每个方法的名称都不相同,在调用时就很难分清哪种情况该调用哪个方法。
为了解决这个问题,Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。
接下来通过方法重载的方式进行修改,如下所示。MethodDemo03.java
1 public class MethodDemo03 { 2 public static void main(String[] args) { 3 // 下面是针对求和方法的调用 4 int sum1 = add(1, 2); 5 int sum2 = add(1, 2, 3); 6 double sum3 = add(1.2, 2.3); 7 // 下面的代码是打印求和的结果 8 System.out.println("sum1=" + sum1); 9 System.out.println("sum2=" + sum2); 10 System.out.println("sum3=" + sum3); 11 } 12 13 // 下面的方法实现了两个整数相加 14 public static int add(int x, int y) { 15 return x + y; 16 } 17 // 下面的方法实现了三个整数相加 18 public static int add(int x, int y, int z) { 19 return x + y + z; 20 } 21 // 下面的方法实现了两个小数相加 22 public static double add(double x, double y) { 23 return x + y; 24 } 25 }
上述代码中定义了三个同名的add()方法,它们的参数个数或类型不同,从而形成了方法的重载。在main()方法中调用add()方法时,通过传入不同的参数便可以确定调用哪个重载的方法。
注意事项;
1. 重载方法参数必须不同:
参数个数不同,如method(int x)与method(int x,int y)不同
参数类型不同,如method(int x)与method(double x)不同g
参数顺序不同,如method(int x,double y)与method(double x,int y)不同
2. 重载只与方法名与参数类型相关与返回值无关
如void method(int x)与int method(int y)不是方法重载,不能同时存在
3. 重载与具体的变量标识符无关
如method(int x)与method(int y)不是方法重载,不能同时存在