所以在java中你不能有不同的返回和参数的重复方法名称?

Ayr*_*rad 5 java

是否可以在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?您有两个选择 - 布尔值或整数变量.由于您无法强制执行要收集的返回值,因此编译器无法确定要调用的变量.

您可以重载方法参数,但不能单独返回返回类型,因为这是不明确的(如上所示).

  • 正如我已经说明的那样,你不能强迫*返回这个值 (2认同)

Yng*_*and 11

因为那时编译器无法弄清楚:

setVal(getVal());

它应该调用bool或int版本吗?

  • 但是编译器如何首先选择bool版本的getVal?它显然有两个同样有效的选择. (4认同)

Tom*_*and 6

乍一看似乎没有理由不应该允许这样做,但是从必须调用这个(这些)方法的代码的角度考虑它,它将如何知道哪个调用方法?

来自java.sun.com

Java编程语言支持重载方法,Java可以区分具有不同方法签名的方法.这意味着如果类中的方法具有不同的参数列表,则它们可以具有相同的名称(有一些资格,将在标题为"接口和继承"的课程中讨论).

重载方法由传递给方法的参数的数量和类型区分.

您不能声明多个具有相同名称和相同数量和类型的参数的方法,因为编译器无法告诉它们.

在区分方法时,编译器不考虑返回类型,因此即使它们具有不同的返回类型,也不能使用相同的签名声明两个方法.


elj*_*nso 5

Java虚拟机而言,类可以声明具有相同签名但返回类型不同的多个方法.

只有,Java作为一种语言禁止这样做.