Polimorfismo en Java

13
INTEGRANTES: Jéssica Caiza Estefani Lucero Mishelle Ruiz POLIMORFISMO

description

Polimorfismo en Java

Transcript of Polimorfismo en Java

Page 1: Polimorfismo en Java

INTEGRANTES: Jéssica Caiza Estefani Lucero Mishelle Ruiz

POLIMORFISMO

Page 2: Polimorfismo en Java

El Polimorfismo es la respuesta distinta frente a una llamada a un método dependiendo de la naturaleza del objeto.

Consiste en definir métodos distintos, que comparten el mismo nombre, pero que se aplican a clases diferentes. Por ejemplo, un método llamado operación puede responder de manera distinta dependiendo de quien lo invoque:

polimorfismo

Page 3: Polimorfismo en Java

Así como la herencia está relacionada con las clases y la jerarquía, el polimorfismo está relacionado con los métodos

RELACIÓN

Page 4: Polimorfismo en Java

• El polimorfismo esta presente cuando se envía un mensaje a un objeto del que no se sabe su tipo, ejecutándose el método adecuado deacuerdo con su tipo.

Page 5: Polimorfismo en Java

Es posible diseñar e implementar sistemas que son mas fácilmente extensibles podemos escribir programas que procesen generalmente como objeto de superclase, objetos de todas las clases existentes en una jerarquía

Las clases que no existen durante el desarrollo de los programas se pueden agregar con poca o ninguna modificación de la parte genérica del programa

POLIMORFISMO

Page 6: Polimorfismo en Java

{ {POLIMORFISMO

Declaramos una superclase con un método obligando a que las clases que hereden de ella lo implementen y dependiendo de que tipo de objeto es el que llame al método es el código que se ejecuta.

SOBRECARGA

La sobrecarga de métodos es dentro de una misma clase definir que un mismo método ejecute distintas instrucciones dependiendo los parámetros que se le pasen.

polimorfismo y sobrecarga

Page 7: Polimorfismo en Java

Existen básicamente 3 formas de polimorfismo: SOBRECARGA .- Significa el uso de un mismo

identificador u operador en distintos contextos y con distintos significados.

SOBREESCRITURA.- se aplica a los métodos y está directamente relacionada a la herencia; se refiere a la redefinición de los métodos de la clase base en las subclases.

ENLACE DINAMICO.- Esto permite invocar operaciones en objetos obviando el tipo actual de éstos hasta el momento de ejecutar el código, es decir nos permite definir elementos como un tipo e instanciarlos como un tipo heredado.

Clasificación:

Page 8: Polimorfismo en Java
Page 9: Polimorfismo en Java

class programa{ public void metodo(){ System.out.println ("\nProgramacion II"); } } class operador extend programa{ } class compilar extend programa{ public void metodo(){ System.out.println ("\nElectronica"); } } public class Ej_pol { public static void main(String[] args) { compilar obj=new compilar(); obj.metodo(); operador obj2=new operador(); obj2.metodo(); }}

Page 10: Polimorfismo en Java

Para poner en práctica se hará un ejemplo bastante sencillo. Se hará una librería de clases que represente figuras tridimensionales y bidimensionales, y su respectiva jerarquía de clases. Las clases deben ser capaces de tener funcionamiento bastante básico, como obtener áreas, volúmenes y perímetros de la figura correspondiente.

Page 11: Polimorfismo en Java
Page 12: Polimorfismo en Java

Una misma llamada ejecuta distintas sentencias dependiendo de la clase a la que pertenezca el objeto al que se aplica el método.

Supongamos que declaramos: Persona p; Podría suceder que durante la ej. del

programa, p referencie a un profesor o a un alumno en distintos momentos, y

Entonces: Si p referencia a un alumno, con p.toString(), se

ejecuta el toString de la clase Alumno. Si p referencia a un profesor, con p.toString(), se

ejecuta el toString de la clase Profesor. Enlace dinámico: Se decide en tiempo de

ejecución qué método se ejecuta. OJO!: Sobrecarga de fs => enlace estático (t.

de compilación).

Page 13: Polimorfismo en Java

public static void main(String[] args) { Persona v[]=new Persona[10];// Se introducen alumnos, profesores y personas en v for (int i=0 ; i<10; i++)

/* Se piden datos al usuario de profesor, alumno o persona */switch (tipo) {

case /* profesor */: v[i] = new Profesor (….); break;

case /* alumno */: v[i] = new Alumno(…); break;

case /* persona */: v[i] = new Persona(…); break;

default: /* ERROR */ }}

for (int i=0 ; i<10; i++) System.out.println(v[i]); // enlace dinámico con toString()

}