原因:
看一下這個例子
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)不是方法重載,不能同時存在