简体   繁体   中英

if overridden method's return type is primitive (e.g. double) ,can we change return type of overriding method (e.g. int ,char)?

As shown below :

Method to be overriden:

double add (int a ,int b){  

} 

Method overridding above method:

int add(int a,int b){

}  

With primitive types it is not possible, but there is a feature added to JDK 1.5 called covariant return types . So, using this feature, a subclass could return a more specific type than the one declared on the parent class.

The following code compiles fine in JDK 1.7

public static class A {
   Number go() { return 0; };
}

public static class B extends A {
  @Override
  Integer go() { return 0; }
}

See JLS Example 8.4.8.3-1. Covariant Return Types

No, you cannot change the return type. You can overload a method by providing alternate or additional input.

ie

int add(int a, int b, int c)

另一种解决方案是使基类型为参数化类型,并在扩展或实例化时声明返回类型。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM