t15 - polimorfismo

11
Tema 15 Polimorfismo

Upload: daniel-santiago-martinez

Post on 08-Jul-2015

499 views

Category:

Education


0 download

DESCRIPTION

Polimorfismo Java

TRANSCRIPT

Page 1: T15 - Polimorfismo

Tema – 15Polimorfismo

Page 2: T15 - Polimorfismo

15.1. Introducción

• El polimorfismo es una de las propiedades más importantes de la programación orientada a objetos.

• El polimorfismo nos permite programar de forma general, en lugar de hacerlo de forma específica.

• Consiste en que al hacer una llamada a un método, tendrá un comportamiento u otro dependiendo del contexto en el que se halle.

• El polimorfismo va muy ligado con la herencia.

PROGRAMACIÓN – Daniel Santiago 2

Page 3: T15 - Polimorfismo

15.2. Formas de polimorfismo

• El polimorfismo se puede dar de las siguientes formas:

– Sobrecarga.

– Sobre-escritura.

– Ligadura dinámica.

PROGRAMACIÓN – Daniel Santiago 3

Page 4: T15 - Polimorfismo

15.3. Sobrecarga

• Este tipo de polimorfismo se da cuando una clase tiene métodos sobrecargados, es decir, métodos con el mismo identificador pero que difieren en el tipo que devuelve o en los parámetros que recibe.

• La misma llamada a un método actuará de una forma u otra en función de los parámetros que reciba dicho método.

PROGRAMACIÓN – Daniel Santiago 4

Page 5: T15 - Polimorfismo

15.3. Sobrecarga

• Ejemplo:class Empleado{

private int identificador;private String nombre;

/*Tenemos dos constructores. Se ejecutará uno u otro en función de los parámetros que usemos en la llamada al

método*/public Empleado(){}public Empleado(int id, String nombre){

this.identificador = id;this.nombre = nombre;

}}

PROGRAMACIÓN – Daniel Santiago 5

Page 6: T15 - Polimorfismo

15.4. Sobre-escritura

• La sobre-escritura tiene relación directa con la herencia. Se refiere a la redefinición de un método de la superclase en las subclases.

• Si sobre-escribimos un método de la superclase en la subclase, se ejecutará uno u otro en función del tipo del objeto que invoque dicho método.

PROGRAMACIÓN – Daniel Santiago 6

Page 7: T15 - Polimorfismo

15.4. Sobre-escritura

• Ejemplo:class Figura{

public void calcularArea(){System.out.println(“Hay que especificar la forma

de la figura”);}

}class Rectangulo{

public void calcularArea(){this.area = this.base * this.altura;

}}

PROGRAMACIÓN – Daniel Santiago 7

Page 8: T15 - Polimorfismo

15.4. Sobre-escritura

• Ejemplo (continuación):class Programa{

public static void main(String args[]){//Declaramos dos variables de tipo Figura y RectanguloFigura fig = new Figura();Rectangulo rect = new Rectangulo();fig.calcularArea(); /*Se ejecuta el método de la clase

Figura*/rect.calcularArea(); /*Se ejecuta el método de la clase

Rectangulo*/}

}

PROGRAMACIÓN – Daniel Santiago 8

Page 9: T15 - Polimorfismo

15.5. Ligadura dinámica

• La ligadura dinámica permite invocar métodos de un objeto sin tener en cuenta su tipo hasta el momento en que se ejecuta el código.

• La ligadura dinámica, como la sobre-escritura, tiene relación directa con la herencia.

PROGRAMACIÓN – Daniel Santiago 9

Page 10: T15 - Polimorfismo

15.5. Ligadura dinámica

• Ejemplo:class Empleado{

private int identificador;private String nombre;public Empleado(int id, String nombre), … -public mostrarDatos() , … -

}class Jefe extends Empleado{

private String dept;public Jefe(int id, String nombre, String dept), … -}public mostrarDatos() ,… -

}

PROGRAMACIÓN – Daniel Santiago 10

Page 11: T15 - Polimorfismo

15.5. Ligadura dinámica

• Ejemplo (continuación):class Programa{

public static void main(String args[]){//Declaro un vector de empleadosEmpleado *+ vector = ,new Empleado(1, “Pepe”), new Jefe(2,

“Paco”, “Ventas”), new Empleado(3, “Maria”)-;for(int i=0;i<vector.length;i++){

empresa[i].mostrarDatos();/*Se llamará a un método o otro en función del tipo

de dato de empresa[i]*/}

}}

PROGRAMACIÓN – Daniel Santiago 11