相同方法名,参数类型不同,传NULL参数。先调用谁?
如
void a(Object o){
...
}
void a(String s){
...
}
public void main(String args[]){ a(null);}猜猜调用的是哪个方法?好吧,我承认是调用void a(String s)
求大神说明其原因!java 参数 null
如
void a(Object o){
...
}
void a(String s){
...
}
public void main(String args[]){ a(null);}猜猜调用的是哪个方法?好吧,我承认是调用void a(String s)
求大神说明其原因!java 参数 null
public class TestOverride {
static void a(A a) {
System.out.println("A...");
}
static void a(B b) {
System.out.println("B...");
}
public static void main(String[] args) {
a(null);
}
class A{
}
class B extends A {
}
}首先,输出为:B..
其次,如果将B类的extends去掉,就会编译不过,错误信息是“a(null)”这种调用会造成混淆。而如果有继承关系,编译就会通过。
return null;
}
String x = foo();
a(x); // 显然调用a(String),同理
Object y = foo();
a(y); // 不管foo()实际返回的类型,还是foo的签名,只管y的声明类型,调用a(Object)