java – 如果重写方法的返回类型是原始的(例如double),我们可以更改重写方法的返回类型(例如int,char)吗?
作者:互联网
如下所示 :
要覆盖的方法:
double add (int a ,int b){
}
覆盖上述方法的方法:
int add(int a,int b){
}
解决方法:
使用原始类型是不可能的,但JDK 1.5中添加了一个名为covariant return types的功能.因此,使用此功能,子类可以返回比父类声明的类型更具体的类型.
以下代码在JDK 1.7中编译良好
public static class A {
Number go() { return 0; };
}
public static class B extends A {
@Override
Integer go() { return 0; }
}
见JLS Example 8.4.8.3-1. Covariant Return Types
标签:java,polymorphism,method-overriding 来源: https://codeday.me/bug/20190716/1477775.html