Saltar al contenido

Polimorfismo en OOP Java con Ejemplo: Qué es, Dinámico

¿Qué es el polimorfismo en Java?

Polimorfismo Java ocurre en Java cuando una o más clases u objetos están relacionados por herencia por herencia. Un objeto es la capacidad de adoptar muchas formas. La herencia permite a los usuarios heredar atributos y métodos, y el polimorfismo utiliza estos métodos para realizar una variedad de tareas. Entonces, el objetivo es la comunicación, pero el enfoque es diferente.

Por ejemplo, tiene un teléfono inteligente para comunicarse. El método de comunicación que elija puede ser cualquier cosa. Puede ser una llamada, mensaje de texto, mensaje con imagen, correo, etc. Entonces, el objetivo común es la comunicación, pero su enfoque es diferente. Se llama Polimorfismo. Ahora, aprendamos polimorfismo en Java, por ejemplo.

A este respecto Tutorial de Java, aprenderás-


Hacer clic aquí si el video no es accesible

Polimorfismo de Java en OPW con ejemplo

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

La operación de depósito y retiro es equivalente a una cuenta Save and Check. Entonces los métodos de herencia de la clase de Cuenta funcionarán.

Ejemplo de polimorfismo de Java

Cambiar el requisito de software

La especificación de requisitos ha cambiado, lo que es tan común en la industria del software. Tiene la intención de colocar una Cuenta Bancaria funcionalmente privilegiada con un Servicio de Sobregiro.

Por antecedentes, un sobregiro es una facilidad en la que puede retirar una cantidad mayor que el saldo disponible en su cuenta.

Entonces, aplique un método de retiro para una necesidad privilegiada nuevamente. Pero no cambia el código probado en la cuenta de ahorros y cheques. Esta es una ventaja para OOPS

Paso 1) De tal manera que cuando se da el método de “retiro” para guardar una cuenta, se ejecuta un método desde la clase de cuenta principal.

Paso 2) Sin embargo, cuando el método de “Retiro” se asigna a la cuenta privilegiada (servicio de sobregiro), se ejecuta un método de retiro definido en la clase privilegiada. Esto es Polimorfismo en POO.

Método de reemplazo en Java

El modo de anulación es redefinir un método de superclase en una subclase.

Reglas de la manera invasiva

Ejemplo


class Doctor{
  public void treatPatient(){
  // treatPatient method
  
}
class Surgeon extends Doctor{
  public void treatPatient(){
  // treatPatient method
  }
}
Class run{
  public static void main (String args[]){
    Doctor doctorObj = new Doctor()
	// treatPatient method in class Doctor will be executed
    doctorObj.treatPatient();
   
    Surgeon surgeonObj = new Surgeon();
    // treatPatient  method in class Surgeon  will be executed
    surgeonObj.treatPatient();
  }
}

Diferencia entre sobrecarga y sobrecarga

Sobrecarga de métodos
Método primordial

Los métodos están sobrecargados en la misma clase, donde más de un método tiene el mismo nombre pero diferentes firmas.

El método primordial es cuando uno de los métodos de la superclase se redefine en la subclase. En este caso, la firma del método sigue siendo la misma.

Ex:


void sum (int a , int b);
void sum (int a , int b, int c);
void sum (float a, double b);

Ex:


class X{
  public int sum(){
     // some code
  }
}

class Y extends X{
  public int sum(){
    //overridden method
   //signature is same
 }
}

¿Qué es el polimorfismo dinámico?

El polimorfismo dinámico en OPW es el mecanismo por el cual se pueden definir múltiples modos con el mismo nombre y firma en la clase alta y subclase. La llamada se resuelve en modo de infracción en tiempo de ejecución.

Ejemplo de polimorfismo dinámico:

Una excelente variable de referencia de clase puede referirse al contenido de la subclase.


 Doctor obj = new Surgeon();

Piense en la declaración


obj.treatPatient();

Esta es la variable de referencia de “objeto” de la clase principal, pero el objeto al que se refiere es la clase del hijo (como se muestra en el siguiente ejemplo del diagrama de polimorfismo).

Obj.treatPatient () método treatPatient () ejecutará la subclase – Cirujano

Si se utiliza una referencia primaria para llamar a un método, la JVM determina el método que se invocará, según el objeto al que se dirige la referencia.

Por ejemplo, aunque una objeción es una referencia a un médico, él lo llama método del cirujano, ya que se centra en el objeto de un cirujano.

Esto se determina durante el tiempo de ejecución y, por lo tanto, se proporciona dinámica o polimorfismo rith-time

Diferencia entre polimorfismo estático y dinámico

El polimorfismo estático en Java es un tipo de polimorfismo que recopila la información para llamar a un método en tiempo de compilación, mientras que el polimorfismo dinámico es un tipo de polimorfismo que recopila la información para llamar a un método en tiempo de ejecución.

Polimorfismo estático
Polimorfismo dinámico
Se trata de sobrecargar métodos. Implica una violación del método.

Los errores, si los hay, se resuelven en tiempo de compilación. Dado que el código no se ejecuta durante la compilación, de ahí el nombre estático.

Ex:


void sum (int a , int b);
void sum (float a, double b);
int sum (int a, int b); //compiler gives error.

			   

Cuando una variable de infracción llama a un método de infracción, el objeto que determina el método a invocar es su variable de referencia. Esto solo se puede determinar en tiempo de ejecución cuando se ejecuta el código y, por lo tanto, el nombre es dinámico.

Ex:


//reference of parent pointing to child object
 Doctor obj = new Surgeon();
// method of child called
obj.treatPatient();
			   

Súper palabra clave para Java

¿Qué pasa si el método treatPatient en la clase Surgeon requiere ejecutar la funcionalidad definida en una clase Doctores y realizar su propia funcionalidad específica?

En este caso, una palabra clave superse pueden utilizar para acceder a los métodos de la clase principal desde la clase secundaria.

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


treatPatient(){
   super.treatPatient();
     //add code specific to Surgeon
}

La palabra clave se puede utilizar para acceder a cualquier clase de datos o métodos de la subclase en la subclase.

A continuación, aprenderemos sobre Super Keyword, Legacy y Polymorphism en Java con programas de muestra.

Ejemplo: – Para aprender Legado, Polimorfismo y súper palabra clave

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


public class Test{
     public static void main(String args[]){
        X x= new X();
       Y y = new  Y();
       y.m2();
      //x.m1();
      //y.m1();
     //x = y;// parent pointing to object of child
     //x.m1() ;
     //y.a=10;
   }

}
class X{
   private int a;
   int b;
      public void m1(){
       System.out.println("This is method m1 of class X");
     }
}

class Y extends X{
      int c; // new instance variable of class Y
         public void m1(){
            // overriden method
            System.out.println("This is method m1 of class Y");
        }
       public void m2(){
           super.m1();
           System.out.println("This is method m2 of class Y");
      }
}

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

Paso 3) Líneas de descomentarios # 6-9. Guarde, compile y ejecute el código. Observa la salida.

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

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

Resumen