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

bq9c1y66  于 2021-06-30  发布在  Java
关注(0)|答案(8)|浏览(283)

在java中有没有可能有两个名称相同但参数和返回类型不同的方法?似乎这将是一个很好的方法来概括一个简单的getter和setter。。你可以用构造函数来实现,为什么不用正则方法呢?例如
为什么不能做。。

int getVal() {

return int;
}

boolean getVal() {

return true;

}

setVal(int a) {
}

以及

setVal(boolean a) {

}
e1xvtsh3

e1xvtsh31#

一般来说-不。但如果你非常想要它-那么是:))检查这篇伟大的文章

cld4siwp

cld4siwp2#

如果我打电话给你,你会想到什么:

getVal();

没有收到回音?您有两个选择-布尔变量或整数变量。由于无法强制收集返回值,编译器无法确定要调用哪个变量。
可以重载方法参数,但不能仅重载返回类型,因为这是不明确的(如上所示)。

icomxhvb

icomxhvb3#

就java虚拟机而言,一个类可以声明具有相同签名但返回类型不同的多个方法。
只是,java作为一种语言禁止这样做。

ha5z0ras

ha5z0ras4#

因为这样编译器就无法理解:

setVal(getVal());

它应该称为bool还是int版本?

pqwbnv8z

pqwbnv8z5#

乍一看似乎没有理由不允许这样做,但是从必须调用这个(这些)方法的代码的Angular 考虑,它怎么知道调用哪个方法呢?
来自java.sun.com
java编程语言支持重载方法,java可以区分具有不同方法签名的方法。这意味着,如果类中的方法具有不同的参数列表,则它们可以具有相同的名称(在标题为“接口和继承”的课程中将讨论一些限定条件)。
重载方法通过传入方法的参数的数量和类型来区分。
不能用相同的名称、相同的参数数目和类型声明多个方法,因为编译器无法区分它们。
编译器在区分方法时不考虑返回类型,因此不能声明具有相同签名的两个方法,即使它们具有不同的返回类型。

inn6fuwd

inn6fuwd6#

您可以在您的案例中声明这两个setter—试试看。
方法的名称、参数的数量和类型必须是唯一的。返回类型,以及 throws 子句,不计算使方法唯一(这是有意义的,因为调用方法时没有指定它们)。

yeotifhr

yeotifhr7#

根据java语言规范(http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.4.2):
在一个类中声明两个具有重写等效签名(定义如下)的方法是编译时错误。
如果两个方法具有相同的名称和参数类型,则它们具有相同的签名。

sh7euo9m

sh7euo9m8#

不同的返回类型,不是。但是不同的参数类型/长度,是的。java就是这样。。。说明书上说。他们想保持简单。

相关问题