Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Herencia y Polimorfismo
Herencia
La herencia es un mecanismo de la P.O.O. que permite construir una clase incorporando de
manera implcita todas las caractersticas de una clase previamente existente.
Es una de las armas fundamentales de la programacin orientada a objetos. Permite crear
nuevas clases que heredan caractersticas presentas en clases anteriores.
Para que una clase herede las caractersticas de otra hay que utilizar la palabra clave extends
tras el nombre de la clase. A esta palabra le sigue el nombre de la clase cuyas caractersticas se
heredarn. Slo se puede tener herencia de una clase (a la clase de la que se hereda se la llama
superclase y a la clase heredada se la llama subclase).
Sintaxis para Declarar Clases Usando Herencia en Java
La sintaxis general para declarar una clase que hereda de una superclase es la siguiente:
class NombreSubClase extends NombreSuperClase {
// cuerpo de la SubClase
}
La herencia representa una relacin o jerarqua es un. La herencia implica que una entidad
B comparte la estructura y comportamiento de una entidad A. En este contexto, la entidad A es
llamada la superclase (o la clase base), y la entidad B es llamada la subclase (o la clase
derivada). Algunas veces, la entidad A es vista como la entidad padre, y la entidad B como la
entidad hija.
Ejemplo: describe la herencia entre las entidades Vehculo y Automvil.
Superclase
Vehculo
es un
Subclase
Automvil
UNIDAD 4.
Herencia y Polimorfismo
Ejemplo:
public class Transporte {
int color;
float velocidad;
int capacidad;
public Transporte(int c, int cap){
color = c; capacidad = cap;
}
}
public class Aereo extends Transporte {
float altura;
public Aereo(int c, int cap, float a){
super(c,cap);
altura = a;
}
}
Superclase o
Clase Base
Transporte
Areo
Subclase o
Clase Derivada
Martimo
UNIDAD 4.
Herencia y Polimorfismo
Ejemplo:
Transporte
Areo
Martimo
Helicptero
Una clase no puede ser su propia superclase. Una clase puede tener cualquier nmero de
subclases, pero slo puede tener una nica superclase. Cada subclase de una clase ser una forma
especializada de su superclase.
UNIDAD 4.
Herencia y Polimorfismo
Qu se Hereda?
Los miembros (variables y mtodos) son heredados
Los constructores no son heredados
Los modificadores de acceso controlan el acceso a los miembros, as los miembros
privados de la clase base, aunque son heredados no son accesibles directamente por la
subclase
Ventajas
Modelado de la realidad: las relaciones de especializacin/generalizacin entre las
entidades del mundo real.
Evita redundancias.
Facilita la reutilizacin del cdigo.
Sirve de soporte para el polimorfismo.
Reduce el coste de mantenimiento.
Genera cdigo ms fiable y robusto.
Aadir nuevos comportamiento a las clases hijas.
La redefinicin de comportamientos.
Creacin de clasificacin jerrquica de clases.
Tipos de Herencia
Principalmente existen dos tipos de herencia.
Herencia simple: una clase solo puede tener un padre, por lo tanto la estructura de clases
ser en forma de rbol.
Herencia mltiple: Una clase puede tener uno o varios padres. La estructura de clases es
un grafo.
Herencia simple
Muy fcil de entender y manejar tanto por el lenguaje como por el programador.
Limitada puesto que en el mundo real un objeto puede pertenecer a varias clases y sin
embargo aqu esta situacin no se puede modelar.
UNIDAD 4.
Herencia y Polimorfismo
Ejemplo:
Herencia mltiple
Es ms realista y da al programador ms libertad y ms posibilidades de reutilizacin de
cdigo.
Es mucho ms difcil de utilizar por la posibilidad de ciclos y para los lenguajes de
programacin es muy costoso el permitirlo.
Ejemplo:
Animal
Animal Acutico
Animal Terrestre
Animal Anfibio
UNIDAD 4.
Herencia y Polimorfismo
Profesor
Estudiante
Preparador
La Clusula sper
La palabra reservada sper se utiliza para hacer una llamada explcita al constructor de la
clase base desde la clase derivada
Tambin se puede usar para referir a los miembros (variables y mtodos) de la superclase
Se usa para acceder a los miembros de la superclase desde la subclase
Ejemplo:
public class Aereo extends Transporte{
float altura;
public Aereo(int c, int cap, float a){
super(c,cap); // Llamada explicita al constructor base
altura = a;
}
public void setColor(int val){
super.color = val; /* Variable miembro de la superclase */
}
}
La Clusula this
La palabra reservada this se utiliza para hacer referencia a los miembros (variables y
mtodos) de la clase actual
Para acceder a las variables de instancias.
UNIDAD 4.
Herencia y Polimorfismo
Ejemplo:
public class Aereo extends Transporte{
float altura;
Variable local
del mtodo
Variable miembro
UNIDAD 4.
Herencia y Polimorfismo
UNIDAD 4.
Herencia y Polimorfismo