java之方法重载

原因:

看一下这个例子

 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

扫描二维码关注公众号,回复: 2213392 查看本文章

参数顺序不同,如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)不是方法重载,不能同时存在

猜你喜欢

转载自www.cnblogs.com/sunmoonyou/p/9327065.html