对于重载方法,不要试图通过给予不同的返回值类型(参数列表完全相同)加以区分。因为方法在调用时可以不将返回值赋值给一个对应的变量,这样就没有特征区分。也不要试图通过在调用这样的重载方法时赋值给对应的变量加以区分,因为问题是出现在重载方法定义上,而不是调用上。总而言之,Java不允许仅仅利用返回值的不同来区分重载方法。
//ReturnValueTest.java
//You cannot distinct the difference between overloading methods through different return values
//You cannot distinct the difference between overloading methods through different return values
public class ReturnValueTest{
void showMessage(){
System.out.println("This method returns a void value.");
}
System.out.println("This method returns a void value.");
}
//编译器将会报错,告诉你showMessage()已经定义
/*String showMessage(){
System.out.println("This method returns a String value.");
return "Hi, I return a String value.";
}*/
/*String showMessage(){
System.out.println("This method returns a String value.");
return "Hi, I return a String value.";
}*/
public static void main(String[] args){
ReturnValueTest rObj=new ReturnValueTest();
//无法区分调用的是哪个showMessage(),不要以为放在println()中就会自动识别为String showMessage()
//System.out.println(rObj.showMessage());
//无法区分调用的是哪个showMessage(),不要以为放在println()中就会自动识别为String showMessage()
//System.out.println(rObj.showMessage());
//String s=rObj.showMessage();
//System.out.println(s);
//System.out.println(s);
}
}
}