Está en la página 1de 9

Herencia

Ing. Jorge Butler


Concepto
• Mecanismo que permite la definición de
una clase a partir de la definición de otra
ya existente.
• La herencia permite el refinamiento o
especialización de una clase existente:
– Se pueden definir los miembros
– Se pueden ocultar los miembros
– Se pueden añadir nuevos miembros
Jerarquías de clases
• La herencia organiza las clases en una
estructura jerárquica:

PUBLICACION
FIGURA

LIBRO REVISTA POLIGONO CIRCULO

INVESTIGACION MAGAZINE RECTANGULO


LIBRO_TEXTO

• Puede existir una clase “raíz” en la jerarquía


de la cual heredan las demás directa o
indirectamente.
Proceso transitivo
A
B hereda de A
C hereda de B y A

B B y C son descendientes (subclases) de A


B es un descendiente directo de A
C es un descendiente indirecto de A

B hereda de A
C B es descendiente de A (Eiffel)
A es un ascendiente de B (Eiffel)
Terminología 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++)
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 implícita
a la clase base (superclase).
• Super permite acceder, desde la subclase,
a los métodos 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
A • Herencia simple
– Una clase puede heredar de
B C una única clase.
– Ejemplo: Java
D E
• Herencia múltiple
B C – Una clase puede heredar de
varias clases.
– Clases forman un grafo dirigido
A
aciclíco
– Ejemplos: Eiffel, C++
Tipos de herencia

• En Java sólo se dispone de herencia


simple, para una mayor sencillez del
lenguaje, si bien se compensa de cierta
manera la inexistencia de herencia
múltiple con un concepto denominado
interface.