public class testDriver {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
testDriver td = new testDriver();
td.test(null);
}
public void test(Object o){
System.out.println("object");
}
public void test(String s){
System.out.println("String");
}
}
上面这段代码运行给过为何为“String”?我理解object是String的父类级别的,并且null也表示空引用,所以td.test(null)调用结果应该是“object”才对。
因为String是Object的子类,所以在编译器调用的时候会先去调用子类。所以结果就是String
一般都是会优先子类的。是一个之下而上的过程。
我刚刚测试了一下我的猜想
public static void test(Integer o){
System.out.println("int");
}
如果你加再加这么一个方法,编译就会报错,因为编译器不知道到底去调用哪个方法。