Concepto Mecanismo que permite la definicin de una clase a partir de la definicin de otra ya existente. La herencia permite el refinamiento o especializacin de una clase existente: Se pueden definir los miembros Se pueden ocultar los miembros Se pueden aadir nuevos miembros Jerarquas de clases La herencia organiza las clases en una estructura jerrquica:
Puede existir una clase raz en la jerarqua de la cual heredan las dems directa o indirectamente. PUBLICACION LIBRO REVISTA LIBRO_TEXTO INVESTIGACION MAGAZINE FIGURA POLIGONO CIRCULO RECTANGULO B hereda de A C hereda de B y A
B y C son descendientes (subclases) de A B es un descendiente directo de A C es un descendiente indirecto de A A B C B hereda de A B es descendiente de A (Eiffel) A es un ascendiente de B (Eiffel) B es subclase de A (Java) A es superclase de B (Java) B es una clase derivada de A (C++) A es la clase base de B (C++) Terminologa Proceso transitivo Trabajando con Herencia
Para expresar una clase heredada en Java se utiliza la palabra reservada extends:
class nombre_clase extends nombre_superclase { cuerpo_de_la_clase } Variable super Representa la referencia interna implcita a la clase base (superclase). Super permite acceder, desde la subclase, a los mtodos y las variables de la superclase. El uso de super es opcional pero, en caso de utilizarse, ha de ser obligatoriamente la primera sentencia del constructor Variable super public class Subclase extends Superclase { public Subclase(int x, int y, int z){ super (x, y); //variables de la superclase this.z = z; //variable de la subclase } } Tipos de herencia Herencia simple Una clase puede heredar de una nica clase. Ejemplo: Java
Herencia mltiple Una clase puede heredar de varias clases. Clases forman un grafo dirigido aciclco Ejemplos: Eiffel, C++ A E D C B A B C Tipos de herencia En Java slo se dispone de herencia simple, para una mayor sencillez del lenguaje, si bien se compensa de cierta manera la inexistencia de herencia mltiple con un concepto denominado interface.