在java中执行静态方法的序列

时间:2014-12-10 09:57:01

标签: java static-methods

我在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的概念。

1 个答案:

答案 0 :(得分:4)

这是方法重载的工作原理。当一个候选项的参数比另一个候选项的参数更具体时(因为StringObject更具体),选择具有更具体参数的方法。

请注意,如果您添加第3个hungry方法,其参数类型与String无关(例如Integer),则代码不会通过编译,因为编译器在hungry(String)hungry(Integer)之间没有偏好。