Herencia publica (class Derivada: public Base ) : Con este tipo de herencia se respetan los comportamientos originales de las visibilidades de la clase Base en la clase Derivada.Herencia privada (clase Derivada: private Base) : Con este tipo de herencia todo componente de la clase Base, será privado en la clase Derivada (ojo! siempre será privado aunque ese dato fuese público en la clase Base)Herencia protegida (clase Derivada: protected Base) : Con este tipo de herencia, todo componente publico y protegido de la clase Base, será protegido en la clase Derivada, y los componentes privados, siguen siendo privados.
O sea, desde la definicion de las clases el acceso a los miembros no cambia aunque cambie el tipo de herencia(public, protected, private
Lo que noto es que fuera de la clase derivada, dentro del main, solo puedo acceder en forma directa a los miembros publicos si y solo si la herencia es publica, pero si esta es privada o protegida no es posible.
¿Entonces para que instanciar una clase base como protected o private, si sólo como public se puede acceder? Bien, que secederia si le das a un compañero el código de clases que tenemos y hace asi: