Java知识点小记

在 Java 中,方法重载(method overloading)是指在同一个类中可以有多个方法名称相同但参数列表不同的方法。Java 编译器在编译时会根据参数的类型来选择调用哪个方法。

在当前的代码中,有两个 mythod 方法,一个接受 Object 参数,另一个接受 String 参数。当你传递 null 作为参数时,Java 编译器需要决定调用哪个方法。

以下是相关的代码片段:

public class Test {

    public void mythod(Object obj) {
        System.out.println("object");
    } 

    public void mythod(String str) {
        System.out.println("string");
    }

    public static void main(String[] args) {
        Test t = new Test();
        t.mythod(null);
    }
}

在这段代码中,当你调用 t.mythod(null) 时,编译器需要选择最合适的方法。在这种情况下:

  1. null 可以匹配任何引用类型(包括 ObjectString)。
  2. 编译器会选择最具体的匹配方法(most specific method)。

StringObject 的子类,因此 StringObject 更具体。在方法重载选择中,编译器会优先选择参数类型更具体的方法。因此,这段代码会输出 string,因为 mythod(String str)mythod(Object obj) 更具体。

因此这段代码只会输出 string

posted @ 2019-07-22 15:08  在云端i  阅读(178)  评论(0编辑  收藏  举报