Access privileges
1. If the designer of the base class needs no one, not even a derived class to access a member, then that member should be made private.
2. If the designer wants any derived class function to have access to it, then that member must be protected.
3. if the designer needs to let everyone , including the instances, have access to that member , then that member should be made public .