Saltar al contenido principal
eLearner.app
Módulo 6 · Lección 1 de 213/18 en el curso~12 min
Lecciones del módulo (1/2)

Heredabilidad en C++

La Herencia es uno de los pilares de la programación orientada a objetos (OOP). Permite que una nueva clase (llamada clase derivada o hija) adquiera los miembros (atributos y métodos) de una clase existente (llamada clase base o padre), promoviendo la reutilización del código.

Sintaxis de Base

En C++, la herencia se especifica utilizando el operador : después del nombre de la clase derivada, seguido del tipo de acceso (normalmente public) y del nombre de la clase base.

Code
class Shape {
public:
    void setColor(std::string c) {
        color = c;
    }
protected:
    std::string color; // Accessibile dalle classi derivate
};

// Rectangle eredita public-mente da Shape
class Rectangle : public Shape {
public:
    double getArea() {
        return width * height;
    }
private:
    double width {0.0};
    double height {0.0};
};

Especificadores de Acceso: protected

Además de public y private, la herencia introduce el especificador protected:

  • Los miembros private de la clase base no son accesibles directamente desde la clase derivada.
  • Los miembros protected de la clase base no son accesibles desde el exterior, pero son accesibles directamente dentro de las clases derivadas.

Inicialización de la Clase Base

Los constructores no se heredan automáticamente. Al instanciar una clase derivada, se llama primero al constructor de la clase base. Si la clase base requiere argumentos, debemos invocarla explícitamente en la member initializer list del constructor derivado.

Code
class Parent {
public:
    Parent(int x) {
        std::cout << "Parent: " << x << std::endl;
    }
};

class Child : public Parent {
public:
    // Chiamata esplicita al costruttore Parent
    Child(int x, int y) : Parent(x) {
        std::cout << "Child: " << y << std::endl;
    }
};

Pruébalo tú mismo

Ejercicio#cpp.m6.l1.e1
Intentos: 0Cargando...

Crea una clase Dog que herede en modo public de la clase Animal. La clase Dog debe incluir un método public play() que imprima 'Playing' mediante std::cout.

Cargando editor...
Mostrar pista

Usa la sintaxis `:` seguida de `public Animal` para extender la clase base, luego escribe el método `play()`.

Solución disponible después de 3 intentos

Ejercicio#cpp.m6.l1.e2
Intentos: 0Cargando...

Completa la clase Car heredando de Vehicle. Escribe un constructor para Car que acepte un std::string b y lo pase al constructor de Vehicle a través de la lista de inicialización.

Cargando editor...
Mostrar pista

En el constructor de `Car`, usa la sintaxis `: Vehicle(b)` justo después de los paréntesis de los parámetros para delegar la inicialización del brand a la clase base.

Solución disponible después de 3 intentos