Você está na página 1de 4

Unidad 19.

La herencia en las clases


19.1. Objetivos del tema.
La herencia es una de las caractersticas de las clases, vamos a ver el
funcionamiento y sus ventajas de cara al uso dentro de los programas.
19.2. Introduccin.
El concepto de herencia en una clase es tal cual la palabra nos lo ndica, no es
necesario ampliar el significado de la misma.
La filosofa es sencilla, yo creo una clase que puede ser el punto de partida
para un concepto y que posteriormente puede ir especializndose o
mejorndose, pero en lugar de copiar y pegar lo que ya tenemos escrito, lo que
hacemos es indicar en el cdigo de la clase que escribo, que tome todas las
caractersticas de la clase que se ndica.
No siempre las clases se pueden heredar, cuando escribimos una clase
podemos indicar de forma explicita que no se pueda usar en otras clases, pero
tambin podemos escribirla como plantilla, y obligar a que sea heredada y no
pueda ser utilizada para declarar con ella un objeto.
19.3. Clase base, origen.
Cuando hablamos de herencia, hay que
pensar que hablamos de una clase que es la
origen y de otra que es la que la contiene.
En la imagen podemos ver como la clase
Tres, se inicia a partir de los contenidos de
las clases Uno y Dos, que se heredan en su
inicio, y que sern la clase de referencia o de origen en parte de los contenidos
de la misma.
Por lo tanto la clase tres tendr todas las capacidades y caractersticas de las
clases Uno y Dos ms las que se desarrollen en ella misma.
En la clase origen se pueden definir mtodos que no se hereden, esos no sern
reutilizados en las clases que se obtengan a partir de la de origen.
En la clase resultante, la clase tres, tendr
entonces el cdigo del que se dispone en las clases
uno y dos, ms el cdigo que se genera propio en
la clase tres.

19.4. Clase derivada.


La clase derivada es la clase resultante al heredar las clases Uno y Dos, y
asumir todas las caractersticas de las clases origen.
Adems en esta clase podemos le aadiremos las caractersticas necesarias
para que cumpla la funcin para la cual se disea.

19.5. Tipos de herencia.


La herencia puede arrancar a partir de una o de varias clases, pero eso
depender de las caractersticas del lenguaje utilizado, ya que no todos
permiten que se hereden en una clase varias clases origen.

Cuando solo se admite la herencia de una clase origen, se denomina herencia


simple, y si se admite ms de una clase se denomina herencia mltiple.

La
herencia
mltiple es
ms
compleja,
tenemos
que tener
presente
que
cuando en una clase se heredan al mismo nivel varias clases origen, el
problema surge cuando se da la circunstancia de existir mtodos con el mismo
nombre, pues hay que decidir cual de ellos es el que dispone de prioridad al ser
utilizado, o bien cuando se llama a un mtodo y ste tiene que buscarse por
varias de las ramas posibles de las distintas
herencias disponibles en la clase actual.

Si miramos la imagen de la derecha, en esa


forma de rombo, si la clase siete hereda la
cuatro, cinco y seis, cuando se indica el uso de

un mtodo que no es de la propia clase siete, hay que buscarlo en todas las
ramas posibles, es decir, en la rama cuatro, dos y uno, pero tambin en la
rama cinco, dos, uno y en la rama seis, tres y uno.
En cuanto a la herencia, hay que pensar que los mtodos de la clase uno,
puede ser que aparezcan, - en funcin de cmo cada lenguaje gestione la
herencia -, repetidos varias veces, lo que genera ambigedades en la gestin.

Dicho de otra forma, se complica en gran medida la gestin y localizacin de


los mtodos y el sistema de prioridades en el momento de localizar dos al
mismo nivel, de ah que lo que habitualmente contemplan los lenguajes de
programacin mayoritariamente es la herencia simple, que es ms sencilla de
gestionar, y tambin por consecuente ms eficiente.
19.6. Sobre escritura.
Una vez que se crea una clase a partir de otras de origen, puede darse la
circunstancia de que los mtodos que tengamos heredados no nos interesen,
en ese caso los mtodos pueden ser sustituidos, sobre escritos, y entonces se
ejecutaran los que se crean de nuevo en la clase resultante, ignorndose los
de la clase origen.
19.7. Limitaciones en la herencia.
Todos los campos y mtodos de una clase son siempre accesibles para el
cdigo de la misma clase.
Para controlar el acceso desde otras clases, y para controlar la herencia por las
clases derivadas, o subclases, los elementos (atributos y mtodos) de las
clases tienen tres situaciones posibles de control de acceso:

Pblico, public
Los miembros declarados pblicos son accesibles en
cualquier lugar en que sea accesible la clase, y son heredados por las
subclases.

Privado, private
la propia clase.

Los miembros declarados privados son accesibles slo en

Protegido, protected Los miembros declarados protegidos son accesibles slo


para sus subclases

19.8. Conclusiones.
El uso de la herencia nos puede
permitir crear la siguiente estructura.
Creamos la clase persona, en esta
clase definimos la estructura de datos
personales y escribimos un mtodo
que nos visualice dichos datos en el
soporte que se crea oportuno.
Despus podemos escribir la clase
alumno, y que esta clase herede la
clase persona, por lo que ya tenemos a
nuestra disposicin todo lo referente a
los datos personales y su visualizacin,
provenientes de la clase base, Persona, y a la clase alumno le aadimos lo
referente a los datos acadmicos y su correspondiente visualizacin.
Y podemos hacer lo mismo con la clase profesor, pero en lugar de datos
acadmicos, le definimos datos administrativos.
Por lo tanto, ambas clases, alumno y profesor, heredan la misma clase,
persona, y comparten la gestin de los datos personales.
Si creamos el objeto

AlumnoDePrimero = nuevo Alumno,

el objeto AlumnoDePrimero tendr disponibles,

Los datos personales y acadmicos.


Los mtodos de visualizar datos personales y datos acadmicos.

Y as sucesivamente podemos ir ampliando las caractersticas de cada una de


las clases, e ir mejorando la estructura de las mismas.

Você também pode gostar