2 diyabu diyabu 于 2014.01.04 20:39 提问

关于null的一段测试程序

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”才对。

1个回答

xiangnan129
xiangnan129   Rxr 2014.01.05 14:23

因为String是Object的子类,所以在编译器调用的时候会先去调用子类。所以结果就是String
一般都是会优先子类的。是一个之下而上的过程。
我刚刚测试了一下我的猜想
public static void test(Integer o){
System.out.println("int");
}
如果你加再加这么一个方法,编译就会报错,因为编译器不知道到底去调用哪个方法。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!