【发布时间】:2016-06-23 13:20:48
【问题描述】:
我有 A 类:
public class A {
int sayHello(int i,int j){
return i+j;
}
}
另一个B类为:
public class B extends A {
@Override
int sayHello(int i, int j) {
return i+j;
}
}
如果我将 A 类的 sayHello(int,int) 方法的返回类型从 int 更改为 float,则会显示错误,因为根据覆盖规则,返回类型也被认为是为什么它也不是有效的覆盖和重载。
我对 为什么 java 不允许更改返回类型感到困惑。为什么返回类型也需要相同
【问题讨论】:
-
允许多态性将是创建难以检测的错误的一个很好的原因。那么像
int blub = myInterfaceType.getIntFromImplementedType()这样的东西就不安全了,因为它可以返回任何东西,而不仅仅是int。
标签: java