小编典典

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

java

假设我有以下重载函数

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参数签名的方法?这里重载的优先顺序是什么?


阅读 214

收藏
2020-11-26

共1个答案

小编典典

在这种情况下,类层次结构中较低的类将具有优先权。换句话说,更具体的类类型,String在这种情况下将是因为StringObject技术上扩展了。

如果您有以下内容

public class A {
    ...
}

public class B extends A {
    ...
}

然后,当您定义如下的重载方法时:

public void test(A object) {
    ...
}

public void test(B object) {
    ...
}

然后调用test(null)将调用第二个方法,因为B它在类层次结构中较低。

2020-11-26