Overriding and Hiding Methods
If a subclass defines a static method with the same signature as a static method
in the superclass, then the method in the subclass hides the one in the superclass.
The distinction between hiding a static method and overriding an instance method
has important implications:
- The version of the overridden instance method that gets invoked is the one in the subclass.
- The version of the hidden static method that gets invoked depends on whether it is invoked from the superclass or the subclass.