Informatica
Herencia.
“Adquirir cuales desde hábitos tiene jóvenes no una tales o tiene poca
importancia: absoluta”.
importancia
Aristóteles (384 AC-322 AC)
La herencia permite que se pueden definir nuevas clases basadas en clases existentes, lo cual facilita re-utilizar código previamente desarrollado. Si una clase deriva de otra (extends) hereda todas sus variables y métodos. La clasederivada puede añadir nuevas variables y métodos y/o redefinir las variables y métodos heredados.
5.1
Introducción a la Herencia.
La herencia es un mecanismo que permite modelar relaciones
jerárquicas entre elementos, del tipo is-a (es un (a)), como por ejemplo la relación que existe entre un mamífero y un perro. En la que un perro es un mamífero. En esta relación, el perro como herederotiene las características del mamífero y aquellas que lo distinguen del resto de los mamíferos.
Mediante herencia definimos una nueva clase, la “hija”, en función de una clase anterior, la “madre”. Esta relación mardre-hija es la más sencilla
de la herencia. De hecho, todas las jerarquías de herencia empiezan con una madre y una hija.
La clase hija es la que recibe la herencia, también seconoce como subclase. La clase madre es de la cual hereda directamente la hija, también se conoce como superclase (Figura 5.1)
34
Figura 5.1. Jerarquía de clases asociadas a un perro de raza Chihuahua.
En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólo puede derivar de una única clase, con lo cual no es posible realizar herencia múltiple en base a clases. Sinembargo es posible “simular” la herencia múltiple en base a las interfaces.
Sintácticamente la nueva clase extiende a la clase original, por lo que se hace uso de la cláusula extends, de la forma
class nombreHija extends nombreMadre { // Cuerpo de la clase }
35
En esencia podemos decir que herencia es: • • • •
Un mecanismo para reutilizar software La extensión de clases existentes,de las que se heredan los atributos y el comportamiento. Java sólo tiene herencia simple. Esto es, una clase sólo puede heredar de una clase. Además, si una clase no hereda de alguna otra clase, Java automáticamente hace que herede de la clase Object.
5.2. Herencia Simple.
Herencia es la capacidad de recibir todos los métodos y variables de una o más clases para realizar ciertas tareas. Por logeneral, las subclases agregan métodos y modifican algunos métodos para realizar tareas diferentes. Por ejemplo, la clase Object (de la que heredan todas las demás clases en Java) define un método llamado toString() que regresa la representación textual del objeto. Cada clase modifica en cierta manera el comportamiento de toString() para regresar valores de acuerdo a la tarea para la que fuecreada la clase.
Por ejemplo, una clase "auto" podría heredar de otra más general, "vehículo", y simplemente redefinir los métodos para el caso particular de los automóviles… lo que significa que, con una buena biblioteca de clases, se puede reutilizar mucho código inclusive sin saber lo que tiene adentro.
La herencia permite que se pueden definir nuevas clases basadas en clases existentes, locual facilita el re-utilizar código previamente
desarrollado. Si una clase deriva de otra (extends) hereda todas sus variables y métodos. La clase derivada puede añadir nuevas variables y 36
métodos y/o redefinir las variables y métodos heredados. La figura 5.2 muestra la notación de herencia (generalización) en UML. Observe figura 5.3. una en la
redefinición del ejemplo de la figura 5.2.La figura 5.4.
muestra la sintaxis Java para el ejemplo.
Figura 5.2. Generalización de una clase (Herencia)
Figura 5.3. Redefinición de la jerarquía de herencia de la clase Vehículo.
37
Figura 5.4. Sintaxis Java para la clase Vehículo.
Para que la jerarquía de herencia tenga sentido, la clase hija debe tener la facultad de hacer lo mismo que la madre. Esto es lo que realmente...
Regístrate para leer el documento completo.