Hackerrank Covariant Return Types Solution
Java allows for Covariant Return Types, which means you can vary your return type as long you are returning a subclass of your specified return type.
Method Overriding allows a subclass to override the behavior of an existing superclass method and specify a return type that is some subclass of