Covariant return type Means
Object -> java.lang.Number -> ImaginaryNumber
- public Number returnANumber() {
- …}
The returnANumber method can return an ImaginaryNumber but not an Object. ImaginaryNumber is a Number because it’s a subclass of Number. However, an Object is not necessarily a Number — it could be a String or another type. You can override a method and define it to return a subclass of the original method, like this
- public ImaginaryNumber returnANumber() {
- …}
Following is the .java file of code with explanation..
- import java.lang.Number;
- class ImaginaryNumber extends Number {
- @Override
- public int intValue() {
- throw new UnsupportedOperationException(“Not supported yet.”);
- }
- @Override
- public long longValue() {
- throw new UnsupportedOperationException(“Not supported yet.”);
- }
- @Override
- public float floatValue() {
- throw new UnsupportedOperationException(“Not supported yet.”);
- }
- @Override
- public double doubleValue() {
- throw new UnsupportedOperationException(“Not supported yet.”);
- }
- }
- class Myclass extends ImaginaryNumber {
- public ImaginaryNumber returnANumber() {
- ImaginaryNumber n1 = null;
- return n1;
- }
- public Number returnANumber2() {
- Number n1 = null;
- return n1;
- }
- public Number returnANumber3() {
- ImaginaryNumber n1 = null;
- return n1;
- }
- public static void main(String[] args) {}
- }
Gowtham RajamanickamPosted Apr 19, 2015, 12:05 AM
Good one....