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