我在java中有一个虚拟程序 -
public class DummyTest {
public static void main(String[] args) {
hungry(null);
}
public static void hungry(Object o){
System.out.println("object");
}
public static void hungry(String s){
System.out.println("string");
}
}
此程序返回打印string
。请告诉我为什么打印string
而不是object
的概念。
答案 0 :(得分:4)
这是方法重载的工作原理。当一个候选项的参数比另一个候选项的参数更具体时(因为String
比Object
更具体),选择具有更具体参数的方法。
请注意,如果您添加第3个hungry
方法,其参数类型与String
无关(例如Integer
),则代码不会通过编译,因为编译器在hungry(String)
和hungry(Integer)
之间没有偏好。