[英]Implement two interfaces with the same method signature but different return type
[英]method overloading with different signature and return type
仅当重载的方法具有不同的签名时,方法重载才可能。 如果签名相同并且只有返回类型不同,则不可能。
引用Java Docs:
区分方法时,编译器不会考虑返回类型,因此即使两个方法具有不同的返回类型,也无法声明具有相同签名的两个方法。
但是,同时具有不同签名和不同返回类型的重载方法有什么问题? 为什么会给出错误?
根据JLS 8.4.9,这应该可以:
...在相同名称的两个方法的返回类型之间或throws子句之间不存在必需的关系,除非它们的签名是等效的。
例如,它可以编译并正常运行:
public class Test {
void move(int x, int y) {
System.out.println("inside void move(int x, int y)");
}
int move(double x, double y) {
System.out.println("inside int move(double x, double y)");
return 0;
}
public static void main(String[] args) {
Test test = new Test();
test.move(0, 0);
test.move(0.0, 0.0);
}
}
关于您发布的代码,您的错误是-您什么也不返回! 您的int a(...)
方法被声明为返回int,而您什么也不返回。 课程:阅读错误消息。
代码中的错误与方法重载无关。
您的第三个方法应返回一个int。 它的身体是空的,因此不返回任何东西。 如果您将其更改为
int a(double q){
return 0;
}
错误将消失
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.