阅读重载方法

时间:2015-03-04 18:16:43

标签: java overloading

我在网上看到一个问题,询问您是否获得了打印声明,

System.out.println(M.m(4.0, 5));  System.out.println(M.m(4, 5.0));

据我所知,double可以用作int,因此将打印第一个方法。即40.0

但是对于第二个打印声明,是否会使用相同的逻辑,并再次打印第一个方法? Java称第二个打印声明为60.0

public static double m(int a, int b) {
 return a * b;
}
public static double m(double a, int b) {
 return a * b * 2;
}
public static double m(double a, double b) {
 return a * b * 3;
}

2 个答案:

答案 0 :(得分:2)

实际上,对于第一次打印,将使用第二次重载,因为参数类型完全匹配:double和int。

对于第二次打印,将使用第三次重载,因为double不会自动提升为int。第二个参数可以从double启动的唯一方法是第三个重载 - 这将强制将第一个参数提升为double。

答案 1 :(得分:0)

由于只有一种方法接受double作为第二个参数,因此第一个参数将被强制转换为double,因此它将被称为M.m(4.0, 5.0),因此落入第三种方法。