这是代码:
public class OverloadingByObject {
public static void main(String[] args) {
// TODO Auto-generated method stub
Object object = null;
new OverloadingByObject().SayHi(null);
new OverloadingByObject().SayHi(object);
}
public void SayHi(String str) {
System.out.println("String called");
}
public void SayHi(Object obj) {
System.out.println("Object called");
}
}
当我传递null时,应调用Object的方法。它调用String方法的原因是什么?
null
可以分配给任何引用类型。在确定将调用哪个方法的重载版本时,将选择具有最特定参数的方法。String
比更为具体Object
(因为String
是的子类Object
)。因此SayHi(String str)
被称为一个null
论点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句