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

上一篇:C#通用方法/多态性


下一篇:c# – 确定对象的类型