總網頁瀏覽量

2013年1月20日 星期日

overloading多載

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
    }

}

沒有留言:

張貼留言