什麼是方法多載overloading?
它讓類似功能的方法可以有同樣的方法名稱,java會自動根據參數的型態和數量來呼叫相對應的方法。像是以下程式碼,方法名稱都是print,只是傳入的參數分別是int、float和double,真正在呼叫的時候java可以判斷你傳的參數是什麼型別,假設傳入int,便會呼叫第一個方法。
public void print(int i)
public void print(float j)
public void print(double k)
但要注意的是若參數型態及數量皆相同,就會發生重複宣告的錯誤,就算傳回值型態不同也不行。
void mothod(int i)
int mothod(int j)
string mothod(int k)
下面直接示範一題,在這個類別中有三個計算不同面積的方法,名稱都是相同的只是傳入的參數數目不同。當主程式呼叫時可以看到裡面只有一個數值而且是double,java就會自動呼叫計算圓形面積的方法,如果你傳入兩個double就是呼叫計算長方形面積的方法,但如果你傳入的參數跟上面三個方法都沒有對應到就會發生錯誤。
public class GetArea {
// 計算圓形面積
public static double areaMeasure(double radius){
return radius * radius * 3.14;
}
// 計算長方形面積
public static double areaMeasure(double height, double width){
return height * width;
}
// 計算梯形面積
public static double areaMeasure(double upper, double bottom, double height){
return (upper+bottom) * height / 2;
}
public static void main(String args[]) {
double i = areaMeasure(3.0);
System.out.println("面積=" +i);
}
}