3

如果有人可以在下面解释,那就太好了。为什么print(String s)在下面的示例中调用方法print(Object o)而不调用方法。

package com.example;

public class DemoTest {

    public void print(Object o){
        System.out.println("Object");
    }
    public void print(String s){
        System.out.println("String");
    }
    public static void main(String[] args) {
        DemoTest dt = new DemoTest();
        dt.print(null);

    }
}
4

1 回答 1

1

取自方法重载中奇怪的 Java 空行为

“那是因为 String 类从 Object 扩展而来,因此更特定于 Object。因此,编译器决定调用该方法。请记住,编译器总是选择最具体的方法来调用。”

于 2013-08-30T15:34:13.630 回答