假设我有以下重载函数
public class Test {
public static void funOne(String s){
System.out.print("String function");
}
public static void funOne(Object o){
System.out.print("Object function");
}
public static void main(String[] args) {
funOne(null);
}
}
为什么funOne(null)
会调用带有String
参数签名的方法?这里重载的优先级是什么?
最佳答案
在这种情况下,类层次结构中较低的类将具有优先权。换句话说,更具体的类类型,在本例中为 String
,因为 String
在技术上扩展了 Object
。
如果您有以下情况
public class A {
...
}
public class B extends A {
...
}
然后当您定义如下重载方法时:
public void test(A object) {
...
}
public void test(B object) {
...
}
然后调用 test(null)
将调用第二个方法,因为 B
在类层次结构中处于较低位置。
关于java - 使用 "null"引用调用重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887775/