public int add(int a, int b) {
//相關程式碼
}
public double add(double a, int b) {
//相關程式碼
}
public double add(int a, double b) {
//相關程式碼
}
public double add(double a, double b) {
//相關程式碼
}方法名稱都為 add ,各自的參數列都不相同,所謂的不相同包括參數 (parameter) 的個數、型態、順序,因此
(double a, int b)
與
(int a, double b)
這兩個是不同的參數列。
過載的意義在於同一方法可以運用不同的參數列,也就是每個相同名稱的方法都可以有不同型態、不同數量的參數,舉例如下
class OverloadDemo {
public int add(int a, int b) {
return a + b;
}
public double add(double a, int b) {
return a + b;
}
public double add(int a, double b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
OverloadDemo demo = new OverloadDemo();
int n1 = 2;
int n2 = 4;
double n3 = 2.5;
double n4 = 3.8;
System.out.println(n1 + "+" + n2 + "=" + demo.add(n1, n2));
System.out.println(n1 + "+" + n3 + "=" + demo.add(n1, n3));
System.out.println(n4 + "+" + n2 + "=" + demo.add(n4, n2));
System.out.println(n3 + "+" + n4 + "=" + demo.add(n3, n4));
}
}
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:OverloadDemo.java
功能:示範物件導向的基本觀念
作者:張凱慶
時間:西元 2010 年 10 月 */編譯後執行,結果如下

這有什麼好處呢?想一想,假如 add() 也可接收字串當成參數的話, add() 的內容就可以是字串型態的參數轉換成數字型態,然後進行相加,最後再回傳數字型態的回傳值。
如果只有回傳值型態不一樣,並不構成過載的條件。
| 中英文術語對照 | |
|---|---|
| 過載 | overlaod |
| 參數列 | parameter list |
| 參數 | parameter |
參考資料
http://download.oracle.com/javase/tutorial/java/javaOO/methods.html
http://java.sun.com/docs/books/jls/third_edition/html/classes.html
http://download.oracle.com/javase/tutorial/java/javaOO/methods.html
http://java.sun.com/docs/books/jls/third_edition/html/classes.html
1 則留言:
假如 add() 也可接收字串當成參數的話, add() 的內容就可以是字串型態的參數轉換成數字型態,然後進行相加,最後再回傳數字型態的回傳值。
這個我不太懂!
『 add( ) 』本來是放進數字型態進去運算,回傳值也是數字型態。
但是這裡經過「 Overload 」後,使得『 add( ) 』可以放進「 String字串型態 」,但回傳值仍為數字型態。
是這樣的意思嗎? 有點不確定你表達是不是這個意思!
張貼留言