overloading中文稱作多載
定義:在相同類別下,宣告名稱相同的method或者建構子,但是參數的個數與參數的型態不同。呼叫method時候java根據串入的引數呼叫對應的method。
進行method多載時,參數的數量或參數型態其中一個項目一定要不同。
只有傳回值型態不同或存取權限修飾詞不一樣,java仍然無法判斷要呼叫哪個method執行。
public int setAge(int age){}
public void setAge(int age){}
setAge只有傳回值型態不同,java無法判斷要執行哪個setAge......
以下實作建構子的多載以及method的多載,
宣告一個類別名字是multipulator,建構子名稱必須跟類別名字一樣。
package overlaoding;
class multipulator{
public multipulator(){//沒有引數的建構子
System.out.println("Good bye world");
}
public multipulator(int x, int y){
//兩個整數引數的建構子
System.out.println(x*y);
System.out.println("int");
}
public multipulator(int x, int y,int z){
//三個整數引數的建構子
System.out.println(x*y*z);
System.out.println("there are three variable");
}
public multipulator(int... x){
//若超過三個引數的話會呼叫這個
for(int i =0;i<x.length;i++){
//x被當作陣列,x存記憶體位止
System.out.println(x[i]);
}
System.out.println("there are many variables you input");
}
public multipulator(double x,double y)
//兩個雙倍精確浮點引數的建構子
{
System.out.println(x*y);
System.out.println("double");
}
}
public class overloading {
public void Calculator(int x,int y)
//兩個整數引數的method
{
System.out.println(x+y);
System.out.println("Calculator method int");
}
public void Calculator(double x,double y){
//兩個double型態引數的method
System.out.println(x+y);
System.out.println("Calculator method double");
}
public static void main(String[] args) {
overloading obj4 =new overloading();
obj4.Calculator(11111,33333);
//印出44444 Calculator method int
obj4.Calculator(118.22,11.88 );
//130.1印出Calculator method double
multipulator ninenine = new multipulator(123,112,11,426);
//印出there are many variables you input
multipulator obj2 = new multipulator();
//印出Good bye world
multipulator obj3 = new multipulator(11.33,118.66);
//印出double
}
}
沒有留言:
張貼留言