2010-02-24 48 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; 
} 

}