是否可以在Java中使用两个具有相同名称但不同参数和返回类型的方法?看起来它是一个很好的方法来推广一个简单的getter和setter ..你可以用构造函数来做到这一点,为什么不使用常规方法?例如
为什么不能做..
int getVal() {
return int;
}
boolean getVal() {
return true;
}
setVal(int a) {
}
Run Code Online (Sandbox Code Playgroud)
和
setVal(boolean a) {
}
Run Code Online (Sandbox Code Playgroud)
Bri*_*new 15
如果我打电话你会期待什么:
getVal();
Run Code Online (Sandbox Code Playgroud)
没有收回vaue?您有两个选择 - 布尔值或整数变量.由于您无法强制执行要收集的返回值,因此编译器无法确定要调用的变量.
您可以重载方法参数,但不能单独返回返回类型,因为这是不明确的(如上所示).
Yng*_*and 11
因为那时编译器无法弄清楚:
setVal(getVal());
它应该调用bool或int版本吗?
乍一看似乎没有理由不应该允许这样做,但是从必须调用这个(这些)方法的代码的角度考虑它,它将如何知道哪个调用方法?
Java编程语言支持重载方法,Java可以区分具有不同方法签名的方法.这意味着如果类中的方法具有不同的参数列表,则它们可以具有相同的名称(有一些资格,将在标题为"接口和继承"的课程中讨论).
重载方法由传递给方法的参数的数量和类型区分.
您不能声明多个具有相同名称和相同数量和类型的参数的方法,因为编译器无法告诉它们.
在区分方法时,编译器不考虑返回类型,因此即使它们具有不同的返回类型,也不能使用相同的签名声明两个方法.