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

java, overriding, polymorphism

Solution

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

Problem

As shown below : Method to be overriden: ``` double add (int a ,int b){ } ``` Method overridding above method: ``` int add(int a,int b){ } ```

Original source

Related problems