polimorfismo en java
DESCRIPTION
Polimorfismo en JavaTRANSCRIPT
INTEGRANTES: Jéssica Caiza Estefani Lucero Mishelle Ruiz
POLIMORFISMO
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
Así como la herencia está relacionada con las clases y la jerarquía, el polimorfismo está relacionado con los métodos
RELACIÓN
• 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.
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
{ {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
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:
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(); }}
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.
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).
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()
}