Translate

martes, 22 de abril de 2025

Tipos de Herencia en C++


En C++, cuando una clase hereda de otra, podemos especificar cómo se deben heredar los miembros públicos y protegidos de la clase base. Esto se hace mediante el tipo de herencia, que puede ser public, protected o private.

public: Herencia Pública


class Animal {

public:

    void respirar() {}

};


class Perro : public Animal {

    // "respirar" sigue siendo público

};



Es la más común para relaciones del tipo es-un (ej: un perro es un animal). Y queda todo como el padre, los metodos publicos y protejidos siguen publicos y protejidos en el hijo. 


protected: Herencia Protegida


class Perro : protected Animal {

    // "respirar" pasa a ser protegido

};

Esta forma rara vez se usa, pero puede servir para limitar el acceso desde fuera sin perder herencia funcional. Los metodos publicos y protejidos pasan a protejidos en el hijo. 


private: Herencia Privada


class Perro : private Animal {

    // "respirar" pasa a ser privado

};


Es útil cuando querés usar la funcionalidad de la clase base sin exponer su interfaz públicamente. Los metodos publicos y protejidos pasan a privados en el hijo. 


Y si no pongo nada ¿Cuál es el valor por defecto?

El valor por defecto en las clases es private y en los structs public.