Polimorfismo

877 views
828 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
877
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Polimorfismo

  1. 1. PolimorfismoLenguajes deProgramación IICorporación Universitariadel Caribe CECAR
  2. 2. Polimorfismo Poly morphos Múltiples formas(Definición) •mismo nombre, métodos diferente implementación •actúen de modo diferente objetos en respuesta a una misma llamada. •Reutilizable Código •Fácil de adaptarlo
  3. 3.  El polimorfismo va ligado a la herencia: objetos jerárquicamente relacionados responden en forma diferente al mismo mensaje
  4. 4. Polimorfismo VSSobrecarga Sobrecarga Polimorfismo se da siempre en una se da entre clases sola clase distintas. se resuelve en tiempo se resuelve en tiempo de ejecución de enlazado (cuando (dependiendo de la se esta construyendo clase a la que el ejecutable) pertenece el objeto que hace el llamado)
  5. 5. Método Abstracto Método Abstracto es un método declarado en una clase para No tendrá se declaran el cual esa clase cuerpo y Sin código pero no se no proporciona terminará en definen. la punto y coma implementación (el código).
  6. 6. Clase abstracta Tiene al menos un Una clase que método extiende a una abstracto Declara la clase abstracta existencia de debe implementar métodos pero los métodos no la abstractos o implementació volverlos a declarar n como abstractos Puede contener tiene que métodos no- derivarse Clase abstractos obligatoriamen Abstracta pero al menos te uno de los métodos debe serlo no pueden tener métodos no se puede privados (no instanciar pero se podrían si se puede implementar) Cuando una heredar ni tampoco clase contiene estáticos. un método abstracto tiene que declararse abstracta
  7. 7. Implementaciónpublic abstract class figura { public abstract class figura2D extends figura {protected String nombre;protected int color; public abstract int calcularArea();protected int grosorBorde;public String getNombre(){ public abstract int calcularPerimetro();return this.nombre; }}public void setNombre(String n){this.nombre=n;}public int getColor(){return this.color;} public abstract class figura3D extends figura {public void setColor(int c){this.color=c; public abstract int calcularVolumen();} }public int getGrosorBorde(){return this.grosorBorde;}public void setGrosorBorde(int g){this.grosorBorde=g;}public abstract void dibujar();}
  8. 8. Interface una interface es una clase abstracta pura, es decir una clase donde todos los métodos son abstractosInterface Si la interface va a tener atributos, éstos deben llevar las palabras reservadas static final y con un valor inicial ya que funcionan como constantes. La interface puede definirse public o sin modificador de acceso Todos los métodos que declara una interface son siempre public Una clase implementa una o más interfaces (separadas con comas ",") con la palabra reservada implements.
  9. 9. Ejemplo Interface  interface nombre_interface { tipo_retorno nombre_metodo ( lista_argumentos ) ; ... } Por ejemplo:  interface InstrumentoMusical { void tocar(); void afinar(); String tipoInstrumento(); }sirven de guía para definir un determinado concepto (clase) y lo quedebe hacer, pero sin desarrollar un mecanismo de solución
  10. 10. Implementación de una interface/** /** * Declaracion de la interfaz Modificacion * Declaracion de la clase Acumulador * @author A. Garcia-Beltran * @author A. Garcia-Beltran * Ultima revision: noviembre, 2007 * Ultima revision: noviembre, 2007*/ */public interface Modificacion { public class Acumulador implements Modificacion { void incremento(int a); private int valor;} public Acumulador (int i) { valor = i; } public int daValor () {/** return valor; * Demostracion de la clase Acumulador } * @author A. Garcia-Beltran public void incremento (int a) { * Ultima revision: noviembre, 2007 valor += a;*/ }public class PruebaAcumulador { } public static void main (String [] args) { Acumulador p = new Acumulador(25); p.incremento(12); System.out.println(p.daValor()); }}
  11. 11. Formas dePolimorfismo Sobre-escritura de métodos:  Métodos de una subclase sobre escriben los métodos de una superclase Sobre-escritura de métodos abstractos  Métodos de una subclase implementan los métodos abstractos de una superclase abstracta Sobre-escritura de métodos a través de interface:  Métodos de una clase concreta implementan los métodos de la interface
  12. 12. Sobre-escritura de métodos  Subclase modifica los métodos que ha heredado de su padre  Nuevo método tiene diferente funcionalidad del método del padre pero con el MISMO  Nombre  Tipo de Retorno  Lista de argumentos (OJO: lo diferencia de la Sobrecarga)public class empleado {String nombre;int salario;public String getDetalle(){ public class Jefe extends empleado {return «Nombre: «+nombre+»nSalario: «+salario;} String depto;} public String getDetalle(){ return «Nombre: «+nombre+»nDepartamento: «+depto; } }
  13. 13. Llamada de métodos virtuales Referencia Referencia estática dinámica (En tiempo de (En tiempo de compilación) ejecución) Empleado e=new Jefe; e.getDetalle();  ¿Cual de los getDetalle() se ejecutará? ¿El de la clase empleado o el de la clase Jefe?

×