4.对于下面代码,选出正确选项( )

public class Test {

    public void myMethod(Object o) {
        System.out.println("My Object");
    }

    public void myMethod(String s) {
        System.out.println("My String");
    }

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

}
A. 编译失败
B. 打印"My Object"
C. 打印"My String"
D. 会发生运行时异常

参考解答

C

重载方法匹配规则:

  1. 找出所有能够调用的方法。能够调用的方法意味着形参个数等于实参个数,实参的类型能够转换为方法形参的类型。
  2. 如果实参与形参的类型能够直接对应,则执行该方法。
  3. 如果能够调用的方法只有一个,则执行该方法。
  4. 能够调用的方法不止一个时,逐一作出判断:如果一个方法的类型签名都可以赋值给另一个方法,则后者(类型大者)被排除;重复此操作,直到无法排除为止。[the Most Specific Method]
  5. 经过步骤(4),如果只剩下一个方法,则执行该方法;或者编译器报错。

results matching ""

    No results matching ""