1 / 15

Polimorfismo

Polimorfismo. Lenguajes de Programación II Corporación Universitaria del Caribe CECAR. Múltiples formas. Polimorfismo (Definición). El polimorfismo va ligado a la herencia: objetos jerárquicamente relacionados responden en forma diferente al mismo mensaje. Polimorfismo VS Sobrecarga.

kael
Download Presentation

Polimorfismo

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR

  2. Múltiples formas Polimorfismo (Definición)

  3. El polimorfismo va ligado a la herencia: objetos jerárquicamente relacionados responden en forma diferente al mismo mensaje

  4. Polimorfismo VS Sobrecarga

  5. Método Abstracto

  6. Clase abstracta

  7. Implementación public abstract class figura2D extends figura {public abstract intcalcularArea();public abstract intcalcularPerimetro();} publicabstractclassfigura {protectedString nombre;protectedint color;protectedintgrosorBorde;publicStringgetNombre(){returnthis.nombre;}publicvoidsetNombre(String n){this.nombre=n;}publicintgetColor(){returnthis.color;}publicvoidsetColor(int c){this.color=c;}publicintgetGrosorBorde(){returnthis.grosorBorde;}publicvoidsetGrosorBorde(int g){this.grosorBorde=g;}publicabstractvoiddibujar();} public abstract class figura3D extends figura {public abstract intcalcularVolumen();}

  8. Interface

  9. Ejemplo Interface • interfacenombre_interface {tipo_retornonombre_metodo( lista_argumentos) ;    . . . } Por ejemplo: • interfaceInstrumentoMusical {void tocar();void afinar();StringtipoInstrumento();} sirven de guía para definir un determinado concepto (clase) y lo que debe hacer, pero sin desarrollar un mecanismo de solución

  10. Implementación de una interface /** * Demostracion de la clase Acumulador * @author A. Garcia-Beltran * Ultima revision: noviembre, 2007 */ publicclassPruebaAcumulador { publicstaticvoidmain (String [] args) { Acumulador p = new Acumulador(25); p.incremento(12); System.out.println(p.daValor()); } } /** * Declaracion de la interfaz Modificacion * @author A. Garcia-Beltran * Ultima revision: noviembre, 2007 */ public interface Modificacion { void incremento(int a); } /** * Declaracion de la clase Acumulador * @author A. Garcia-Beltran * Ultima revision: noviembre, 2007 */ publicclass Acumulador implementsModificacion { privateint valor; public Acumulador (int i) { valor = i; } publicintdaValor () { return valor; } publicvoidincremento (int a) { valor = valor+a; } }

  11. Formas de Polimorfismo • 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. 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) publicclassempleado {String nombre;int salario;publicStringgetDetalle(){ return"Nombre: "+nombre+"\nSalario: "+salario; } }} publicclassJefeextendsempleado {Stringdepto; publicStringgetDetalle(){return“Nombre: “+nombre+”\nDepartamento: “+depto;}}

  13. Llamada de métodos virtuales • ¿Cual de los getDetalle() se ejecutará? ¿El de la clase empleado o el de la clase Jefe? Empleado e=new Jefe; e.getDetalle();

More Related