我有以下程序重载方法。 有人可以解释一下以下程序的输出。
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);
}
}
答案 0 :(得分:2)
将调用最少的泛型(最具体的)构造函数。因此,public void display(String str)
将被调用,因此String method
后跟null
将被打印
对象类位于类层次结构的顶部。 String
,StringBuilder
,Exception
等等于Object
以下1级。 IOException
比Exception
低一级。因此,如果您有3个方法,其中一个Object
,另一个Exception
和另一个IOException
,则会调用IOException
的方法,因为它位于最低级别类层次结构(最少通用)。
尝试放置两个处于同一级别的类,看看会发生什么:)