Herencia Programacion C++
Herencia Programacion C++
Herencia Programacion C++
Herencia de Clases
- La reutilización de código. En aquellos casos donde se necesite crear una clase que,
además de otros propios, deba incluir los métodos definidos en otra, la herencia evita
tener que reescribir todos esos métodos en la nueva clase.
- Mantenimiento de aplicaciones existentes. Utilizando la herencia, si tenemos una clase
con una determinada funcionalidad y tenemos la necesidad de ampliar dicha
funcionalidad, no necesitamos modificar la clase existente (la cual se puede seguir
utilizando para el tipo de programa para la que fue diseñada) sino que podemos crear una
clase que herede a la primera, adquiriendo toda su funcionalidad y añadiendo la suya
propia.
Las clases derivadas “heredan” los datos y métodos miembro de las clases base, pudiendo las
clases derivadas redefinir estos comportamientos (polimorfismo) y añadir comportamientos
nuevos.
Para diferenciar una clase hija de otra clase hija e incluso diferenciarla de su propia clase
padre, debe existir al menos un atributo que no pueda ser generalizado en la clase padre, es
decir, debe existir un atributo único que lo diferencie de todas las demás clases.
Una clase derivada se puede entender como una especialización de la clase base. Mientras
que una clase base se puede entender como una generalización de las clases derivadas.
Jerarquía de clases
más de una superclase. Esto contrasta con la herencia simple, donde una clase hija sólo puede
heredarse de una sola superclase.
Cuando una clase se hereda de otra, la clase derivada hereda todos los datos y métodos
públicos de la clase base.
Se pueden especificar tres modificadores de acceso a la clase Base: public, private y protected.
En todos los casos, los miembros privados de la clase base permanecen privados a la clase
derivada.
La siguiente tabla recoge todas las posibles combinaciones de los accesos a las secciones de
una clase:
Cuando se crea una clase derivada, el compilador hace una copia de la clase base en la clase
derivada, permitiendo al programador añadir o modificar miembros sin que la clase base sufra
alteración alguna.