package ljy.overload;
/**
*
*/
/**
* @author fshxxxyydys
*
*/
public class overloadMethod { //方法重載
//JAVA只支持方法重載,不支持符號重載
//在傳統的語言中,方法名稱不能重複,優秀的方法名資源
//只能被使用一次,很是遺憾,程序員必須花費額外的時間
//去費盡心機思考替代的方法名。
//在現代的編程語言,比如JAVA,支持方法名的重複使用,
//這種語法現象叫做方法名的重載,但是有一定的約束條件。
//1.參數的數量不同。
//2.參數的數量相同,參數的數據類型也要略有不同
//3.參數名、返回值以及訪問修飾符均不作爲考量的尺度。
//重載失敗就會構成重名(duplicate method)
//重載給我們帶來了超級方法和智能方法
//本質上:根本不存在方法的重載 在編譯器編譯的時候將
//所謂的重載的方法的名稱全部改掉了,雖然這樣但是我們
//享受到了所謂的“重載”所帶來的樂趣和便利。
int add(int a,int b){ //編譯器:add_int_int
return a + b;
}
double add(int a,double b){ //編譯器:add_int_double
return a + b;
}
int add(int a,int b,int c){ //編譯器:add_int_int_int
return a + b+ c;
}
//重名
//private void add(int c,int d){
//
// return c + d;
//}
double add(double a,double b){ //編譯器:add_double_double
return a + b;
}
//不定參數,m不在是普通的整型變量,而是一個整型數組的名稱
//一個方法中的不定參數只能有一個,而且必須是該方法參數列表的最後一個
double add(double a, int ... m ){
double sum = a;
for(int x:m)
sum += x;
return sum;
}
}
/**
*
*/
package ljy.overload;
/**
* @author fshxxxyydys
*
*/
public class Tester {
/**
* @param args
*/
public static void main(String[] args) {
overloadMethod om = new overloadMethod();
//智能:根據傳入參數的樣式,選則合適的方法進行調用
//System.out.println();就是一個最典型的例子,幾乎
//你放進去的東西都可以被打印,因爲一個方法名下有
//十幾個函數在支持者它,所以你覺得它功能強大。
System.out.println(om.add(1, 2));
System.out.println(om.add(1, 2.0));
System.out.println(om.add(5.0, 2.0));
System.out.println(om.add(1, 2,3));
//第一個數是double型的,剩餘的整型可以無限添加
System.out.println(om.add(1.8,1,2,3,4,5,6,7));
}
}
===============================================================
Result:
3
3.0
7.0
6
29.8
===============================================================