-
public class Test {
-
public void test(Object obj) {
-
System.out.println("Object");
-
}
-
-
public void test(String str) {
-
System.out.println("String");
-
}
-
-
public static void main(String[] args) {
-
Test t = new Test();
-
t.test(null);
-
}
-
}
求输出的结果。
我一开始认为会在编译期间报异常,但是回家测试的结果居然是"String"。
确实有点意思。
如果再增加一个类似的方法,就可以出现编译期异常了。

函数重载的两个类型有继承关系,如果不能确定调用哪个函数的时候,都会交给子类。
函数重载有三个类型,其中两个继承自一个类,那么就彻底不能确定调用的函数了。所以编译异常。
-
public class Test {
-
public void test(Animal animal) {
-
System.out.println("Animal");
-
}
-
-
public void test(Cat cat) {
-
System.out.println("Cat");
-
}
-
-
public static void main(String[] args) {
-
Test test = new Test();
-
test.test(null);
-
//显示 Cat
-
}
-
}
-
-
class Animal {
-
}
-
-
class Cat extends Animal {
-
}
再增加一个Dog类型,就不能默认选择子类的方法了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-1127386/
,如需转载,请注明出处,否则将追究法律责任。