什麼是方法過載?如果我們在Java中過載main方法會發生什麼?


**方法過載**是實現多型的一種機制。如果一個類包含兩個名稱相同但引數不同的方法,那麼每次呼叫此方法時,方法體將根據引數與方法呼叫繫結。

示例

在下面的Java程式中,Calculator類有兩個名為addition的方法。它們之間的唯一區別在於一個包含3個引數,另一個包含2個引數。

在這裡,我們可以透過傳遞兩個整數或三個整數來呼叫addition方法。根據我們傳遞的整數數量,將執行相應的方法。

 線上演示

public class Calculator {
   public int addition(int a , int b){
      int result = a+b;
      return result;
   }
   public int addition(int a , int b, int c){
      int result = a+b+c;
      return result;
   }
   public static void main(String args[]){
      Calculator cal = new Calculator();
      System.out.println(cal.addition(12, 13, 15));
   }
}

輸出

40

過載main方法

是的,我們可以在Java中過載main方法,即我們可以透過更改引數來編寫多個public static void main()方法。如果我們這樣做,程式將在編譯時不會出現編譯錯誤。

但是,當我們執行此程式時,JVM會搜尋具有public、static、返回型別為void以及String陣列作為引數的main方法,並呼叫它。它永遠不會呼叫具有其他型別引數的main方法。

public static int main(String[] args){
}

**注意** - 如果找不到這樣的方法,則會生成執行時錯誤。

示例

在下面的示例中,我們嘗試過載public static void main()方法(透過使用具有不同引數的兩個main方法),一個接受String陣列作為引數,另一個接受整數陣列作為引數 -

 線上演示

public class OverloadingMain {
   public static void main(String args[]) {
      System.out.println("main method with String array as arguments");
   }
   public static void main(int args[]) {
      System.out.println("main method with integer array as arguments");
   }
}

輸出

當我們執行此程式時,帶有整數陣列作為引數的main方法永遠不會被呼叫。

main method with String array as arguments

更新於:2020年6月29日

7000+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告