使用“null”引用调用重载函数

2023-11-29

假设我有以下重载函数

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在类层次结构中处于较低位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“null”引用调用重载函数 的相关文章

随机推荐