什麼是方法過載?如果我們在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
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP