Continuando con la programación orientada a objetos en C++ hoy vamos a ver cómo funciona la herencia de clases, con algunos ejemplos.
Recordemos que, en C++, cuando una clase extiende de otra, la misma hereda sus métodos y propiedades, exceptuando el constructor.
También vamos a ver cómo sobrescribir métodos de la clase padre.
Nota: antes de que leas sobre la herencia, mira los principios de la programación orientada a objetos en C++.
Extender de otra clase en C++
Para definir que una clase extiende de otra, se usan los dos puntos:
class NombreDeClase: NombreDeLaClasePadre{};
Se puede extender de varias clases:
class NombreDeClase: NombreDeUnaClase, NombreDeOtraClase{};
Llamar a métodos de la clase padre
Si los métodos de la clase son marcados como públicos o protegidos, se puede acceder a ellos a través de this
.
Sobrescribir métodos
Para sobrescribir métodos dentro de una clase padre, los mismos deben ser declarados como virtuales con la palabra virtual. Por ejemplo:
virtual void nombreDelMetodo(){};
De esta manera, en la clase hija se sobrescribe con la palabra override:
void nombreDelMetodo override(){}
Obviamente el método debe tener el mismo nombre, número de argumentos y valor de retorno.
Llamar al constructor padre
Se puede llamar al constructor padre, para ello primero se debe definir un constructor en la clase hija.
Por ejemplo:
ConstructorDeLaClaseHija(int argumento1) : ConstructorDeLaClasePadre(argumento1){};
Fíjate que el constructor de la clase padre no indica el tipo de dato, solo el nombre de la variable.
Vas a entender mejor con el código.
Hablar es de mal gusto, muéstrame el código
Ahora veamos el código de todo lo que hemos explicado sobre la herencia de clases en C++
Dentro del código se refleja el acceso a las propiedades y métodos definidas en la clase padre, así como un ejemplo para sobrescribir métodos.
La definición y llamada del constructor es un poco compleja, pero se ejemplifica claramente. Por cierto, el constructor de la clase hija podría tener más argumentos y pasarle únicamente algunos a la del padre.
Como siempre, recuerda que la clase puede definir sus propios métodos y propiedades, así como extender de varias clases.
Ejecuta el código aquí.