【发布时间】:2014-09-30 15:02:52
【问题描述】:
我尝试了以下两种情况:
void ssss(int b){
System.out.println ("int"+b);
}
void ssss(double b){
System.out.println ("long"+b);
}
并进行了方法调用
ssss(100);
这很好用。
void calcAve(double marks1, int marks2) {
System.out.println ("first average");
}
void calcAve(int marks1, double marks2) {
System.out.println ("second average");
}
并进行了方法调用
calcAve(2,3);
这返回了一个编译错误:对 calcAve 的引用不明确。
了解为什么第二个会出现编译错误。我的问题是使用相同的类比,第一种情况也应该返回错误,但事实并非如此。为什么??
【问题讨论】:
-
因为 2 可以是有效的 int 或 double
-
因为您有 2 个可以采用整数的重载方法。 (双,整数)以及(整数,双)。就像@getlost 所说,
2可以被视为int以及double。 -
在第二种情况下,您的数据类型不匹配
-
你应该知道什么是 double 什么是 int。可以转换为 calcAve((int)2,3);
标签: java overloading