什麼是方法過載?如果我們在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
廣告