Sei sulla pagina 1di 3

HERENCIA LENGUAJE PROGRAMACION JAVA HERENCIA Representa uno de los conceptos ms importantes de laprogramacin orientada a objetos, podemos definir

la herencia como la capacidad de crear clases que adquieran de manera automtica los miembros (atributos y mtodos) de otras clases que ya existen, pudiendo al mismo tiempo aadir atributos y metodos propios. Ventajas de la Herencia Reutilizacin de codigo. En aquellos casos donde se necesite crear una clase que, adems de otros propios, deba incluir los mtodos definidos en otra, la herencia evita tener que reescribir todos esos metodos en la nueva clase. Mantenimiento de aplicaciones existentes. Utilizando la herencia, si tenemos una clase con una determinada funcionalidad y tenemos necesidad de ampliar dicha funcionalidad, no necesitamos modificar la clase existente (la cual se puede seguir utilizando para el tipo de programa para el que fue diseada) sino que podemos craer una clase que herede a la primera, adquiriendo toda su funcionalidad y aadiendo la suya propia. Ejemplo: Dada la clase Punto podramos crear a travs de la herencia una nueva clase, llamada PuntoColor, que adquiera las coordenadas x e y como atributos propios y adems pudiera aadir algunos adicionales como el color. Nomenclatura y reglas En la POO, a la clase que va a ser heredada se la llama superclase o clase base, mientras que a la que hereda se la conoce como subclase o clase deribada. La herencia entre dos clases se representa con una flecha saliendo de la subclase hacia la superclase. Figura 1 Relacin de herencia

Hay unas reglas bsicas sobre la herencia en JAVA que hay que tener en cuenta. * En Java no est permitids la herencia mutiple, es decir una subclase no puede heredar ms de una clase. * Si es posible una herencia multiple, es decir, A puede ser heredada por B y C puede heredar a B. * Una clase puede ser heredada por varias clases.

No es posible Si es posible Figura 2 Relaciones de herencia posibles y no posibles Relacin es un La herencia ntre dos clases establece una relacin entre las mismas de tipo es un, lo que significa queun objeto de una subclase tambien es un objeto de la suprclase. Po r ejemplo, vehiculo es la superclase de Automovil, por lo que un Automovil es un

Vehiculo (Figura 5). De la misma forma, Animal es la superclase de Mamifero y sta es a su vez superclase de Len, esto nos lleva a que Len es un mamifero y es un animal. Figura 3 Relacin es un entre subclase y superclase Un forma de de saber si una relacin de herencia entre clases est bien planteada es comprobar si se cumple la relacin es un entre la subclase y la superclase. Por ejemplo, para crear una clase Lnea podramos intentar heredar la clase Punto pensando que esuna subclase de sta, sin embargo, una lnea es un punto? La respuesta es NO, por lo que la herencia esta mal planteada. Creacin de la herencia en Java Cuando se crea una clase que va a heredar de otra clase, se utiliza la palabra extends, se guida del nombre de la superclase en la cabecera de la declaracin: public class subclase extends superclase { public subclase() { } //cdigo de la subclase } La nueva clase podr incluir atributos y mtodos propios para completar su funcin. Por ejemplo la clase PuntoColor heredara Punto para adquirir las coordenadas x e y, y adems incluira el atributo color: public class PuntoColor extends Punto { private String color; //cdigo de la clase } Todas las clases de Java heredan alguna clase. En caso de que no se especifique mediante extends la clase que se va a heredar, implicitamente se heredar Object. Esta clase se encuentra en el paquete java.lang y proporciona el soporte bsico para cualquier clase Java. La definicin de una clase que no herede explcitamente a otra, equivale a: public class NombreClase extends Object { //cdigo de la clase } La clase Object es, por tanto, la superclase de todas las clases de Java, incluidas las del API J2SE y J2EE. Aunque una subclase hereda todos los miembros de la superclase, incluido los privados, no tiene acceso directo a stos, puesto que private significa privado a la clase, solamente accesibles desde el interior de sta.

Tipos de herencia de clases Existen dos tipos de herencia: * Herencia por especializacin * Herencia por generalizacin En realidad la herencia es la misma, esta es una diferenciacin puramente conceptual sobre la forma en que se a llegado a ella. Una herencia por especializacin es la que se realiza cuando necesitamos crear una clase nueva que disponga de las mismas caractersticas que otra pero que le aada funcionalidades. Por ejemplo si tenemos una clase que genera un botn simple, y necesitamos crear un botn que sea igual que el anterior pero que adems aada un efecto al ser clicado. La herencia por generalizacin es la que realizamos cuando tenemos muchas clases que comparten unas mismas funcionalidades y por homogeneizar las partes comunes se decide crear una clase que implemente toda esa parte comn y se dejan solo las partes especificas en cada clase. Por ejemplo si tenemos clases para dibujar formas geomtricas todas ellas disponen de las mismas propiedades (un color de fondo, color de linea, etc..), todas estas caractersticas pueden estar en una clase general de la que hereden todas las clases concretas, evitando tener que escribir todo ese cdigo comn en todas ellas.

Potrebbero piacerti anche