如图,当定义好了locked方法后,new出新的lock类对象test,调用locked方法时,如果方法定义中有locked(String type)时,test(null)调用该方法,打印出如下结果:
public class Lock {
public void locked(String type){
System.out.println("调用的是locked(Str)方法");
}
public void locked(int type){
System.out.println("调用的是locked(int)方法");
}
public void locked(){
System.out.println("调用的是locked()方法");
}
public static void main(String[] args){
Lock test=new Lock();
test.locked();
test.locked(2);
test.locked("2");
test.locked(null);
}
}
运行结果
调用的是locked()方法
调用的是locked(int)方法
调用的是locked(Str)方法
调用的是locked(Str)方法
进程已结束,退出代码0
但当我注释掉String方法后,如图,运行编译未通过。
修改后代码如下:
public class Lock {
/**public void locked(String type){
System.out.println("调用的是locked(Str)方法");
}*/
public void locked(int type){
System.out.println("调用的是locked(int)方法");
}
public void locked(){
System.out.println("调用的是locked()方法");
}
public static void main(String[] args){
Lock test=new Lock();
test.locked();
test.locked(2);
//test.locked("2");
test.locked(null);
}
}
运行结果及报错内容
java: 不兼容的类型: <nulltype>无法转换为int
请问是否代表null做参数的调用就是默认String类型的形参?如果用null作为参数调用的话是调用的那种形式的对应方法呢?希望各位不吝赐教