我有A班:
public class A {
int sayHello(int i,int j){
return i+j;
}
}
Run Code Online (Sandbox Code Playgroud)
另一个B类:
public class B extends A {
@Override
int sayHello(int i, int j) {
return i+j;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将类A的方法sayHello(int,int)的返回类型从int更改为float,则会显示错误,因为根据覆盖规则,返回类型也被认为是为什么它也不是有效的覆盖和重载.
我很困惑为什么java不允许改变返回类型.为什么返回类型也需要相同
因为:
class Parent {
int method() { return 1; }
}
class Child extends Parent {
float method() { return 1.0f; }
}
Parent p = new Child();
int myInt = p.method();
Run Code Online (Sandbox Code Playgroud)
什么method()回报?它应该是一个int,因为Parent它说它是一个int.但是Child返回一个float.那么你期望发生什么?JVM应该崩溃吗?
顺便说一句,您可以更改返回类型,但它必须是类型的子类型,重写的方法返回.所以你可以覆盖一个返回a Parent并Child用作返回类型的方法.
| 归档时间: |
|
| 查看次数: |
2132 次 |
| 最近记录: |