Tema – 15Polimorfismo
15.1. Introducción• El polimorfismo es una de las propiedades más  importantes de la programación orientada a  objetos.• E...
15.2. Formas de polimorfismo• El polimorfismo se puede dar de las siguientes  formas:   – Sobrecarga.   – Sobre-escritura....
15.3. Sobrecarga• Este tipo de polimorfismo se da cuando una  clase tiene métodos sobrecargados, es decir,  métodos con el...
15.3. Sobrecarga• Ejemplo:      class Empleado{          private int identificador;          private String nombre;       ...
15.4. Sobre-escritura• La sobre-escritura tiene relación directa con la  herencia. Se refiere a la redefinición de un  mét...
15.4. Sobre-escritura• Ejemplo:      class Figura{          public void calcularArea(){                  System.out.printl...
15.4. Sobre-escritura• Ejemplo (continuación):      class Programa{          public static void main(String args[]){      ...
15.5. Ligadura dinámica• La ligadura dinámica permite invocar métodos  de un objeto sin tener en cuenta su tipo hasta  el ...
15.5. Ligadura dinámica• Ejemplo:      class Empleado{          private int identificador;          private String nombre;...
15.5. Ligadura dinámica• Ejemplo (continuación):      class Programa{          public static void main(String args[]){    ...
Upcoming SlideShare
Loading in …5
×

T15 - Polimorfismo

1,005 views

Published on

Polimorfismo Java

Published in: Education
  • Be the first to comment

  • Be the first to like this

T15 - Polimorfismo

  1. 1. Tema – 15Polimorfismo
  2. 2. 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
  3. 3. 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
  4. 4. 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
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. 15.4. Sobre-escritura• Ejemplo (continuación): class Programa{ public static void main(String args[]){ //Declaramos dos variables de tipo Figura y Rectangulo Figura 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
  9. 9. 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
  10. 10. 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
  11. 11. 15.5. Ligadura dinámica• Ejemplo (continuación): class Programa{ public static void main(String args[]){ //Declaro un vector de empleados Empleado *+ 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

×