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.
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
privatede la clase base no son accesibles directamente desde la clase derivada. - Los miembros
protectedde 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.
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
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.
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
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.
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