在本文中,您將了解方法重載以及如何借助示例在Java中實現(xiàn)重載。
在Java中,如果兩個或多個方法的參數(shù)不同(不同數(shù)量的參數(shù),不同類型的參數(shù)或兩者都不同),則它們可以具有相同的名稱。這些方法稱為重載方法,此功能稱為方法重載。例如:
void func() { ... } void func(int a) { ... } float func(double a) { ... } float func(int a, float b) { ... }
在這里,func()方法是重載的。這些方法具有相同的名稱,但是接受不同的參數(shù)。
請注意,這些方法的返回類型不同。 重載方法可以具有不同的返回類型,也可以不具有不同的返回類型,但它們接受的參數(shù)必須不同。
假設您必須執(zhí)行給定數(shù)字的加法運算,但是可以有任意數(shù)量的參數(shù)(為簡單起見,可以說2個或3個參數(shù))。
為了完成任務,可以分別為兩個和三個參數(shù)創(chuàng)建兩個方法sum2num(int,int)和sum3num(int,int,int)。但是,其他程序員以及您將來可能會感到困惑,因為這兩種方法的行為相同,但名稱不同。
完成此任務的更好方法是重載方法。并且,根據(jù)傳遞的參數(shù),調(diào)用其中一個重載方法。這有助于提高程序的可讀性。
以下是執(zhí)行方法重載的不同方法:
class MethodOverloading { private static void display(int a){ System.out.println("參數(shù): " + a); } private static void display(int a, int b){ System.out.println("參數(shù): " + a + " 和 " + b); } public static void main(String[] args) { display(1); display(1, 4); } }
輸出:
參數(shù): 1 參數(shù): 1 和 4
class MethodOverloading { //此方法接受int private static void display(int a){ System.out.println("得到了整數(shù)數(shù)據(jù)."); } //此方法接受String對象 private static void display(String a){ System.out.println("得到了String對象。"); } public static void main(String[] args) { display(1); display("Hello"); } }
輸出:
得到了整數(shù)數(shù)據(jù) 得到了String對象。
在這里,兩個重載方法都接受一個參數(shù)。但是,一個接受int類型的參數(shù),而另一個接受String對象。
class HelperService { private String formatNumber(int value) { return String.format("%d", value); } private String formatNumber(double value) { return String.format("%.3f", value); } private String formatNumber(String value) { return String.format("%.2f", Double.parseDouble(value)); } public static void main(String[] args) { HelperService hs = new HelperService(); System.out.println(hs.formatNumber(500)); System.out.println(hs.formatNumber(89.9934)); System.out.println(hs.formatNumber("550")); } }
運行該程序時,輸出為:
500 89.993 550.00
注意:在Java中,您還可以用類似于方法的方式重載構(gòu)造函數(shù)。
推薦相關: Java構(gòu)造函數(shù)重載
如果兩個或多個方法接受不同的參數(shù),則它們在同一個類中可以具有相同的名稱。 此功能稱為方法重載。
方法重載可以通過以下任一方式實現(xiàn):
更改參數(shù)數(shù)量。
或更改參數(shù)的數(shù)據(jù)類型。
不能通過只更改方法的返回類型來實現(xiàn)方法重載。