Sei sulla pagina 1di 9

UNIDAD 4.

Herencia y Polimorfismo

Ing. Steven Surez

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

ltima Modificacin: 17/07/2014

UNIDAD 4.

Herencia y Polimorfismo

Ing. Steven Surez

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

La herencia mltiple no es soportada por Java


Una subclase en una jerarqua puede llegar a ser una superclase para otra clase
Una clase no puede ser una superclase de s misma
Cada subclase de una clase ser una forma especializada de la superclase

ltima Modificacin: 17/07/2014

UNIDAD 4.

Herencia y Polimorfismo

Ing. Steven Surez

Ejemplo:

Transporte

Areo

Martimo

Esta clase es subclase de Transporte y


a la vez es superclase de Helicptero

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.

ltima Modificacin: 17/07/2014

UNIDAD 4.

Herencia y Polimorfismo

Ing. Steven Surez

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.

ltima Modificacin: 17/07/2014

UNIDAD 4.

Herencia y Polimorfismo

Ing. Steven Surez

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

ltima Modificacin: 17/07/2014

UNIDAD 4.

Herencia y Polimorfismo

Profesor

Ing. Steven Surez

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.

ltima Modificacin: 17/07/2014

UNIDAD 4.

Herencia y Polimorfismo

Ing. Steven Surez

Ejemplo:
public class Aereo extends Transporte{
float altura;

Variable local
del mtodo

public void setAltura(float altura){


this.altura = altura;
}
}

Variable miembro

Herencia y Modificadores de Acceso


Una subclase puede acceder a todas las variables y mtodos declarados como public y
protected de su superclase.
Si la superclase est presente en el mismo paquete que la subclase, entonces la subclase
puede acceder a todas las variables y mtodos declarados sin modificador (package por
defecto) en su superclase.
La Clusula final
Se puede declarar una variable que tenga un valor constante a travs del programa usando
el modificador final sobre la variable.
Cuando se usa con un mtodo, previene que el mtodo sea sobrescrito
Cuando se usa con una clase, previene que la clase sea heredada
Ejemplo:
public final class Cuenta{
protected float saldo = 0;
public final float interes = 10;
public final void setSaldo(float val){
saldo = (val>=0)?val:saldo;
}
}

ltima Modificacin: 17/07/2014

UNIDAD 4.

Herencia y Polimorfismo

Ing. Steven Surez

Error, la clase Cuenta no


puede ser heredada
public class CuentaCorriente extends Cuenta{
private float numChequera;

Error, el mtodo cambiarInteres ()


no puede ser sobrescrito

public void cambiarInteres() {


interes+= 2;
}

Error, el valor de la variable


inters no puede ser cambiado

public void setSaldo(float val){


saldo = val;
}
}
Polimorfismo
Permite a las entidades tener diferentes estructuras internas para compartir la misma interfaz
externa. Polimorfismo significa un nombre y mltiples funciones.
En la programacin orientada a objeto, polimorfismo significa una sola interfaz y mltiples
implementaciones. En otra palabra, los nombres de mtodos son los mismos, pero tienen
diferentes implementaciones basadas en los parmetros que le son pasados, o en los objetos
invocados.
Ejemplo:
viod imprimirResultado (int a, int b) {
System.out.println (a);
System.out.println (b);
}
viod imprimirResultado (int a, char c) {
System.out.println (a);
System.out.println(c);
}

ltima Modificacin: 17/07/2014

UNIDAD 4.

Herencia y Polimorfismo

Ing. Steven Surez

viod imprimirResultado (char c, int a) {


System.out.println (a);
System.out.println (b);
}
viod imprimirResultado (int a, int b, int c) {
System.out.println (a);
System.out.println (b);
System.out.println(c);
}
viod imprimirResultado (int a, char c, float f, String s) {
System.out.println (a);
System.out.println (c);
System.out.println (f);
System.out.println (s);
}

ltima Modificacin: 17/07/2014

Potrebbero piacerti anche