La herencia es uno de los pilares fundamentales de la Programación Orientada a Objetos (POO). Permite crear nuevas clases basadas en clases existentes, facilitando la reutilización de código y la creación de jerarquías de clases.
Conceptos Clave
- Clase Base (Superclase o Clase Padre): La clase de la cual se heredan propiedades y métodos.
 - Clase Derivada (Subclase o Clase Hija): La clase que hereda propiedades y métodos de la clase base.
 - Herencia Simple: Una clase derivada hereda de una sola clase base.
 - Herencia Múltiple: Una clase derivada hereda de más de una clase base (C++ soporta herencia múltiple).
 - Visibilidad de Herencia: Controla cómo se heredan los miembros de la clase base (pública, protegida, privada).
 
Sintaxis Básica
class ClaseBase {
public:
    int atributo;
    void metodo() {
        // Código del método
    }
};
class ClaseDerivada : public ClaseBase {
    // ClaseDerivada hereda de ClaseBase
};En este ejemplo, ClaseDerivada hereda el atributo atributo y el método metodo de ClaseBase.
Ejemplo Práctico
Vamos a crear un ejemplo práctico para ilustrar la herencia en C++.
Clase Base: Animal
#include <iostream>
using namespace std;
class Animal {
public:
    void comer() {
        cout << "El animal está comiendo." << endl;
    }
};Clase Derivada: Perro
class Perro : public Animal {
public:
    void ladrar() {
        cout << "El perro está ladrando." << endl;
    }
};Uso de las Clases
int main() {
    Perro miPerro;
    miPerro.comer();  // Método heredado de Animal
    miPerro.ladrar(); // Método de Perro
    return 0;
}Explicación del Código
- Clase Animal: Define un método 
comer. - Clase Perro: Hereda de 
Animaly añade un métodoladrar. - Función main: Crea un objeto 
miPerrode la clasePerro, que puede usar tanto el métodocomer(heredado) como el métodoladrar. 
Herencia Múltiple
C++ permite la herencia múltiple, donde una clase puede heredar de más de una clase base.
Ejemplo de Herencia Múltiple
class Mamifero {
public:
    void amamantar() {
        cout << "El mamífero está amamantando." << endl;
    }
};
class Volador {
public:
    void volar() {
        cout << "El volador está volando." << endl;
    }
};
class Murcielago : public Mamifero, public Volador {
    // Murcielago hereda de Mamifero y Volador
};Uso de la Clase Murcielago
int main() {
    Murcielago miMurcielago;
    miMurcielago.amamantar(); // Método heredado de Mamifero
    miMurcielago.volar();     // Método heredado de Volador
    return 0;
}Ejercicio Práctico
Ejercicio 1: Crear una Jerarquía de Clases
- Clase Base: 
Vehiculo- Atributo: 
velocidad - Método: 
mover() 
 - Atributo: 
 - Clase Derivada: 
Coche- Atributo: 
marca - Método: 
acelerar() 
 - Atributo: 
 
Solución
#include <iostream>
using namespace std;
class Vehiculo {
public:
    int velocidad;
    void mover() {
        cout << "El vehículo se está moviendo a " << velocidad << " km/h." << endl;
    }
};
class Coche : public Vehiculo {
public:
    string marca;
    void acelerar() {
        velocidad += 10;
        cout << "El coche " << marca << " ha acelerado a " << velocidad << " km/h." << endl;
    }
};
int main() {
    Coche miCoche;
    miCoche.velocidad = 50;
    miCoche.marca = "Toyota";
    miCoche.mover();
    miCoche.acelerar();
    return 0;
}Explicación del Ejercicio
- Clase Vehiculo: Define un atributo 
velocidady un métodomover. - Clase Coche: Hereda de 
Vehiculo, añade un atributomarcay un métodoacelerar. - Función main: Crea un objeto 
miCochede la claseCoche, establece la velocidad y la marca, y llama a los métodosmoveryacelerar. 
Conclusión
La herencia es una herramienta poderosa en la POO que permite la reutilización de código y la creación de jerarquías de clases. En este módulo, hemos aprendido los conceptos básicos de la herencia, cómo implementarla en C++, y hemos visto ejemplos prácticos y ejercicios para reforzar el aprendizaje. En el próximo módulo, exploraremos el polimorfismo, otro pilar fundamental de la POO.
Curso de Programación en C++
Módulo 1: Introducción a C++
- Introducción a C++
 - Configuración del Entorno de Desarrollo
 - Sintaxis y Estructura Básica
 - Variables y Tipos de Datos
 - Entrada y Salida
 
Módulo 2: Estructuras de Control
Módulo 3: Funciones
- Introducción a las Funciones
 - Parámetros de Función y Tipos de Retorno
 - Sobrecarga de Funciones
 - Recursión
 
Módulo 4: Arreglos y Cadenas
- Introducción a los Arreglos
 - Arreglos Multidimensionales
 - Introducción a las Cadenas
 - Manipulación de Cadenas
 
Módulo 5: Punteros y Referencias
- Introducción a los Punteros
 - Aritmética de Punteros
 - Punteros y Arreglos
 - Referencias
 - Asignación Dinámica de Memoria
 
Módulo 6: Programación Orientada a Objetos
- Introducción a la POO
 - Clases y Objetos
 - Constructores y Destructores
 - Herencia
 - Polimorfismo
 - Encapsulación y Abstracción
 
Módulo 7: Temas Avanzados
- Plantillas
 - Manejo de Excepciones
 - Entrada/Salida de Archivos
 - Biblioteca Estándar de Plantillas (STL)
 - Expresiones Lambda
 - Multihilo
 
