Member Hiding
What happens when members in our hierarchy have the
same name? Does overloading occur? NO!
Overloading means that we have unique signatures for the
same named function within the same scope. In a
hierarchy, each class has its own separate class scope.
Overloading doesn't apply between classes.
Instead, inheritance allows members in a base class to be
hidden by members of the same name in a derived class.
By hiding base class members the behavior of those
functions can be redefined by the derived class without
changing the base class or affecting existing client
applications.