Java的重载解析过程是以两阶段运行的:
- 选取所有可获得并且可应用的方法或构造器
- 在第一阶段选取的方法或构造器中选取最类型最匹配的一个
(1)如果两个方法参数有继承关系,那子类作参数的那个方法更匹配
(2)如果两个方法无继承关系,而又无法根据参数类型选择具体为哪个方法时,则编译时会报错
public class Demo {
private void test(Thread t) {
System.out.println("Thread:" + t);
}
private void test(Runnable r) {
System.out.println("Runnable:" + r);
}
public static void main(String[] args) {
new Demo().test(null);
}
}
运行结果:
根据参数类型不确定选择确定方法
选择参数类型最匹配的方法