Single Inheritance
Previously, we recommended that data members be
specified in the private section.
By following this guideline when designing hierarchies,
all derived classes would explicitly need to use the base
class' public member functions to access inherited data.
This isn't practical when building classes that are intended
to work in harmony with one another. And, it reduces our
ability to extend the functionality of a given class in the
future.
By declaring members as protected, derived classes have
access to base class members while restricting access by
client applications.