Overriding by Return Types
Before Java 5 it wasn't possible to override a method based on its return type. Now, we can override a method if its return types are in the same direction as the subclass, that is, if the methods have Covariant Return Types.