在java中有没有可能有两个名称相同但参数和返回类型不同的方法?似乎这将是一个很好的方法来概括一个简单的getter和setter。。你可以用构造函数来实现,为什么不用正则方法呢?例如为什么不能做。。
int getVal() { return int; } boolean getVal() { return true; } setVal(int a) { }
以及
setVal(boolean a) { }
e1xvtsh31#
一般来说-不。但如果你非常想要它-那么是:))检查这篇伟大的文章
cld4siwp2#
如果我打电话给你,你会想到什么:
getVal();
没有收到回音?您有两个选择-布尔变量或整数变量。由于无法强制收集返回值,编译器无法确定要调用哪个变量。可以重载方法参数,但不能仅重载返回类型,因为这是不明确的(如上所示)。
icomxhvb3#
就java虚拟机而言,一个类可以声明具有相同签名但返回类型不同的多个方法。只是,java作为一种语言禁止这样做。
ha5z0ras4#
因为这样编译器就无法理解:
setVal(getVal());
它应该称为bool还是int版本?
pqwbnv8z5#
乍一看似乎没有理由不允许这样做,但是从必须调用这个(这些)方法的代码的Angular 考虑,它怎么知道调用哪个方法呢?来自java.sun.comjava编程语言支持重载方法,java可以区分具有不同方法签名的方法。这意味着,如果类中的方法具有不同的参数列表,则它们可以具有相同的名称(在标题为“接口和继承”的课程中将讨论一些限定条件)。重载方法通过传入方法的参数的数量和类型来区分。不能用相同的名称、相同的参数数目和类型声明多个方法,因为编译器无法区分它们。编译器在区分方法时不考虑返回类型,因此不能声明具有相同签名的两个方法,即使它们具有不同的返回类型。
inn6fuwd6#
您可以在您的案例中声明这两个setter—试试看。方法的名称、参数的数量和类型必须是唯一的。返回类型,以及 throws 子句,不计算使方法唯一(这是有意义的,因为调用方法时没有指定它们)。
throws
yeotifhr7#
根据java语言规范(http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.4.2):在一个类中声明两个具有重写等效签名(定义如下)的方法是编译时错误。如果两个方法具有相同的名称和参数类型,则它们具有相同的签名。
sh7euo9m8#
不同的返回类型,不是。但是不同的参数类型/长度,是的。java就是这样。。。说明书上说。他们想保持简单。
8条答案
按热度按时间e1xvtsh31#
一般来说-不。但如果你非常想要它-那么是:))检查这篇伟大的文章
cld4siwp2#
如果我打电话给你,你会想到什么:
没有收到回音?您有两个选择-布尔变量或整数变量。由于无法强制收集返回值,编译器无法确定要调用哪个变量。
可以重载方法参数,但不能仅重载返回类型,因为这是不明确的(如上所示)。
icomxhvb3#
就java虚拟机而言,一个类可以声明具有相同签名但返回类型不同的多个方法。
只是,java作为一种语言禁止这样做。
ha5z0ras4#
因为这样编译器就无法理解:
它应该称为bool还是int版本?
pqwbnv8z5#
乍一看似乎没有理由不允许这样做,但是从必须调用这个(这些)方法的代码的Angular 考虑,它怎么知道调用哪个方法呢?
来自java.sun.com
java编程语言支持重载方法,java可以区分具有不同方法签名的方法。这意味着,如果类中的方法具有不同的参数列表,则它们可以具有相同的名称(在标题为“接口和继承”的课程中将讨论一些限定条件)。
重载方法通过传入方法的参数的数量和类型来区分。
不能用相同的名称、相同的参数数目和类型声明多个方法,因为编译器无法区分它们。
编译器在区分方法时不考虑返回类型,因此不能声明具有相同签名的两个方法,即使它们具有不同的返回类型。
inn6fuwd6#
您可以在您的案例中声明这两个setter—试试看。
方法的名称、参数的数量和类型必须是唯一的。返回类型,以及
throws
子句,不计算使方法唯一(这是有意义的,因为调用方法时没有指定它们)。yeotifhr7#
根据java语言规范(http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.4.2):
在一个类中声明两个具有重写等效签名(定义如下)的方法是编译时错误。
如果两个方法具有相同的名称和参数类型,则它们具有相同的签名。
sh7euo9m8#
不同的返回类型,不是。但是不同的参数类型/长度,是的。java就是这样。。。说明书上说。他们想保持简单。