Polimorfismo en OOP Java con Ejemplo

¿Qué es polimorfismo?

El polimorfismo es un concepto OOPs donde un nombre puede tener muchas formas.

Por ejemplo, tiene un teléfono inteligente para comunicarse. El modo de comunicación que elijas podría ser cualquier cosa. Puede ser una llamada, un mensaje de texto, un mensaje de foto, correo, etc. Por lo tanto, el objetivo es común que sea la comunicación, pero su enfoque es diferente. Esto se llama polimorfismo.

En este tutorial, aprenderá-

Polimorfismo de Java en POO con Ejemplo

Tenemos una clase para padres, ‘Cuenta’ con función de depósito y retiro. Cuenta tiene 2 clases de niños

La operación de guardar y retirar es la misma para las cuentas de ahorro y de cheques. Entonces, los métodos heredados de la clase Account funcionarán.

Cambio en el requisito de software

Hay un cambio en la especificación de requisitos, algo que es tan común en la industria del software. Se supone que debe agregar una cuenta bancaria privilegiada con la función de sobregiro.

En un contexto, el sobregiro es una facilidad en la que puede retirar un monto superior al saldo disponible en su cuenta.

Por lo tanto, retire el método para que las necesidades privilegiadas se implementen de nuevo. Pero no cambia el fragmento de código probado en la cuenta de ahorros y cuentas corrientes. Esta es una ventaja de OOPS

Paso 1) Tal que cuando se llama al método “retirado” para guardar la cuenta se ejecuta un método desde la clase de cuenta principal.

Paso 2) Pero cuando se llama al método “Retirar” para la cuenta privilegiada (facilidad de sobregiro) se ejecuta el método de retirada definido en la clase privilegiada. Esto es polimorfismo.

Método anulando

Método Anulación está redefiniendo un método de superclase en una subclase.

Reglas para la anulación de método

  • La firma del método, es decir, el nombre del método, la lista de parámetros y el tipo de devolución, tienen que coincidir exactamente.
  • El método reemplazado puede ampliar la accesibilidad pero no restringirla, es decir, si es privada en la clase base, la clase hija puede hacerla pública, pero no al revés.

Ejemplo

 

Diferencia entre Sobrecarga y Anulación

Método de sobrecarga Método anulando
La sobrecarga de métodos está en la misma clase, donde más de un método tiene el mismo nombre pero firmas diferentes. La sobrescritura del método ocurre cuando uno de los métodos en la superclase se redefine en la subclase. En este caso, la firma del método sigue siendo la misma.
Ex:
Ex:

¿Qué es el polimorfismo dinámico?

El polimorfismo dinámico es el mecanismo mediante el cual se pueden definir múltiples métodos con el mismo nombre y firma en la superclase y la subclase. La llamada a un método reemplazado se resuelve en tiempo de ejecución.

Ejemplo de polimorfismo dinámico:

Una variable de referencia de la superclase puede referirse a un objeto de clase secundaria

Considera la declaración

Aquí la variable de referencia “obj” es de la clase padre, pero el objeto al que apunta es de la clase hija (como se muestra en el diagrama).

obj.treatPatient () ejecutará el método treatPatient () de la subclase – Surgeon

Si se utiliza una referencia de clase base para llamar a un método, la JVM decide el método que se va a invocar, según el objeto al que apunta la referencia.

Por ejemplo, aunque obj es una referencia al Doctor, llama al método del Cirujano, ya que apunta a un objeto del Cirujano

Esto se decide durante el tiempo de ejecución y, por lo tanto, se denomina polimorfismo dinámico o de tiempo de ejecución

Super Palabra clave

¿Qué sucede si el método treatPatient en la clase Surgeon quiere ejecutar la funcionalidad definida en la clase Doctor y luego realizar su propia funcionalidad específica?

En este caso, la palabra clave superse puede usar para acceder a los métodos de la clase principal de la clase secundaria.

El método treatPatient en la clase Surgeon podría escribirse como:

La palabra clave super se puede usar para acceder a cualquier miembro de datos o métodos de la superclase de la subclase.
Ejemplo: -para aprender herencia, polimorfismo y super palabra clave

Paso 1) Copie el siguiente código en un Editor

Paso 2) Guarde, compile y ejecute el código. Observe la salida.

Paso 3) Descomenta las líneas # 6-9. Guarde, compile y ejecute el código. Observe la salida.

Paso 4) Descomente la línea # 10. Guarde y compile el código.

Paso 5) Error =? Esto se debe a que la subclase no puede acceder a miembros privados de la superclase.

Diferencia entre polimorfismo estático y dinámico

Polimorfismo estático Polimorfismo dinámico
Se relaciona con la sobrecarga de métodos. Se relaciona con la anulación de método.
Los errores, si los hay, se resuelven en el momento de la compilación. Dado que el código no se ejecuta durante la compilación, de ahí el nombre estático.

Ex:

En caso de que una variable de referencia llame a un método anulado, el método que se invocará estará determinado por el objeto al que apunta su variable de referencia. Esto solo se puede determinar en tiempo de ejecución cuando el código está en ejecución, de ahí el nombre dinámico.

Ex:

 

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *