以下程序的输出是什么(方法重载)

时间:2015-10-26 13:29:03

标签: java

我有以下程序重载方法。 有人可以解释一下以下程序的输出。

public class test {

    public void display(Object obj)
    {
        System.out.println("object method");
        System.out.println(obj);
    }
    public void display(String str)
    {
        System.out.println("String method");
        System.out.println(str);
    }

    public static void main(String[] args) {
        test t=new test();
        t.display(null);
    }

}

1 个答案:

答案 0 :(得分:2)

将调用最少的泛型最具体的)构造函数。因此,public void display(String str)将被调用,因此String method后跟null将被打印

对象类位于类层次结构的顶部。 StringStringBuilderException等等于Object以下1级。 IOExceptionException低一级。因此,如果您有3个方法,其中一个Object,另一个Exception和另一个IOException,则会调用IOException的方法,因为它位于最低级别类层次结构(最少通用)。

尝试放置两个处于同一级别的类,看看会发生什么:)