2010-02-24 43 views
1

我創建了一個名爲Times的類,我必須構造4個重載的方法。我只想幫助理解重載的方法,至少也許可以幫助第一個方法。我真的很感激。謝謝:)重載方法的幫助

  • 乘法2點的整數,並返回(整數)產物
  • 乘法3點的整數,並返回(整數)產物
  • 乘法2個值和返回的(雙)產品
  • 乘法3個精度值和返回(雙)產品

回答

2

「重載方法」只是意味着方法將具有相同的名稱(並且在同一個類中)。但是,參數的數量或類型需要不同。

由於所有乘法的東西,「乘」作爲一個名字是有道理的。

第一招:

乘2點的整數,並返回 (整數)產品

所以它返回一個整數(一個int),被命名爲 「正片疊底」,需要2個整數作爲參數,這給了我們:

int multiply(int a, int b) { 

它返回的產品,所以身體是:

return a * b; 

然後,我們有一個做:

} 

這給了我們:

int multiply(int a, int b) { 
    return a * b; 
} 

使用他人相同的方法和相同的名稱。

1

它看起來財產以後這樣的:


public class Times { 
    public int mult(int a, int b) { 
     return a*b; 
    } 
    public int mult(int a, int b, int c) { 
     return a*b*c; 
    } 
    //2 more overloaded versions to come here 
} 

至於理解它們的含義 - 編譯代碼時,編譯器通過查看參數來確定使用哪些方法(全部調用相同的名稱)。

如此例如這樣的事情


int a = 1; 
int b = 1; 
Times t = new Times(); 
t.mult(a,b); 

編譯器將挑選的2種MULT方法我演示了1,而對於這一點:


int a = 1; 
int b = 1; 
int c = 2; 
Times t = new Times(); 
t.mult(a,b,c); 

它會選擇第二個(以關於參數的數量)

3

是這樣的?

public class Times { 
    public static int multiply(int a, int b) { 
     return a * b; 
    } 

    public static int multiply(int a, int b, in c) { 
     return multiply(a, b) * c; 
    } 

    public static double multiply(double a, double b) { 
     return a * b; 
    } 

    public static double multiply(double a, double b) { 
     return multiply(a, b) * c; 
    } 
} 
+0

在這裏,你有什麼是方法重載一個溫柔的描述: http://en.wikipedia.org/wiki/Method_overloading – Alexandre

0

你可以做這樣的事情

public class Times {  
public static void main(String[] args) { 
    System.out.println(multiplyInt(1,2)); 
    System.out.println(multiplyDoubles(2.0,3.0)); 
} 

public static int multiplyInt(int... numbers){ 
    int multiply = 1; 
    for(int number : numbers){ 
     multiply = multiply*number; 
    } 
    return multiply; 
} 

public static double multiplyDoubles(double... numbers){ 
    double multiply = 1; 
    for(double number : numbers){ 
     multiply = multiply*number; 
    } 
    return multiply; 
} 

}