Overriding vs. Overloading
In a derived class, if a method declaration does not match
the exact signature, then it is not an “override”, but an
“overload”.
If a method is declared as final, it cannot be overridden.
 If a class is declared as final, it cannot be extended.