Herencia Programacion C++

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Programación II

Herencia de Clases

La herencia es un mecanismo de abstracción creado para poder facilitar y mejorar el diseño de


las clases. Con ella se puede crear nuevas clases a partir de otras. Entre las principales ventajas
que ofrece la herencia en el desarrollo de aplicaciones, están:

- 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

La herencia permite la transmisión de propiedades y métodos de un objeto a otro a través de


la organización jerárquica de clases a la que pertenece. Al clasificarse, se obtiene una jerarquía
de clases y surge la generalización y especialización.

Herencia simple vs herencia múltiple

La herencia múltiple hace referencia a la característica de los lenguajes de programación


orientada a objetos en la que una clase puede heredar comportamientos y características de
Programación II

más de una superclase. Esto contrasta con la herencia simple, donde una clase hija sólo puede
heredarse de una sola superclase.

Acceso a la clase Base

Los elementos de una clase se pueden dividir en tres grupos:

- public: Accesibles desde cualquier función del programa


- private: Sólo pueden acceder a ellos las funciones miembro de la clase.
- protected: Sólo pueden acceder a ellos las funciones miembro de la clase y de clases
derivadas.

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.

class derivada: public base


Colocando la palabra reservada public delante del nombre de la clase base, significa que todos
los miembros public y protected de la clase base serán miembros public y protected de la
clase derivada.

class derivada: private base


Se puede especificar también la palabra reservada private delante del nombre de la clase. En
este caso, todos los miembros public y protected de la clase base se convierten en miembros
privados de la clase derivada.

class derivada: protected base


Por último, cuando la palabra reservada protected se sitúa antes del nombre de la clase base,
todos los miembros public y protected se convierten en miembros protegidos de la clase
derivada.

En todos los casos, los miembros privados de la clase base permanecen privados a la clase
derivada.

Normalmente en la herencia se utiliza la forma de acceso pública.

La siguiente tabla recoge todas las posibles combinaciones de los accesos a las secciones de
una clase:

Especificador Desde la misma clase Desde clases Desde el exterior


derivadas
Public Si Si Si
Protected Si Si No
private si No No
Programación II

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.

El diagrama UML que muestra la relación de herencia es el siguiente.

También podría gustarte