【发布时间】:2013-04-10 05:27:36
【问题描述】:
public class OverloadingTest extends Format{
public int add(String s1){
System.out.println("With String");
return 1;
}
public int add(Object a){
System.out.println("With Object");
return 1;
}
public static void main(String[] args) {
OverloadingTest overloadingTest = new OverloadingTest();
overloadingTest.add(null);
}
}
为什么程序的输出是With String ?
我已经尝试阅读 JLS 的第 6 版,但我仍然找不到答案。
我能猜到的唯一原因是选择了继承层次结构中最接近的匹配项。
所以在这种情况下,它将把 String 作为 Object 是它的超类。
【问题讨论】:
-
你回答了你自己的问题 :)
-
subber 子类总是被选中....
-
@Deepak Bala 哦,太好了。但是您有任何参考或文档可以指出这一点吗?
-
@Sam - Telthien 设法在我之前引用它。看看那个。
-
您可以自己创建引用,只需将 public int add(Object a) 函数放在 public int add(String s1) 之前,看看这次有什么输出
标签: java overloading