Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Polimorfismo en Java OOP con ejemplo:qué es, dinámico

¿Qué es el polimorfismo en Java?

Polimorfismo en Java ocurre cuando hay una o más clases u objetos relacionados entre sí por herencia. Es la capacidad de un objeto para tomar muchas formas. La herencia permite a los usuarios heredar atributos y métodos, y el polimorfismo usa estos métodos para realizar diferentes tareas. Entonces, el objetivo es la comunicación, pero el enfoque es diferente.

Por ejemplo, tiene un teléfono inteligente para comunicarse. El modo de comunicación que elija podría ser cualquier cosa. Puede ser una llamada, un mensaje de texto, un mensaje de imagen, correo, etc. Entonces, el objetivo común es la comunicación, pero su enfoque es diferente. Esto se llama polimorfismo. Ahora, aprenderemos polimorfismo en Java con un ejemplo.

En este tutorial de Java, aprenderá-




Haga clic aquí si no se puede acceder al video

Polimorfismo de Java en programación orientada a objetos con ejemplo

Tenemos una clase principal, 'Cuenta' con función de depósito y retiro. La cuenta tiene 2 clases secundarias

La operación de depósito y retiro es la misma para las cuentas de Ahorro y Corriente. Entonces, los métodos heredados de la clase Cuenta funcionarán.

Ejemplo de polimorfismo de Java

Cambio en los requisitos 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 la funcionalidad Cuenta bancaria privilegiada con Facilidad de sobregiro.

A título informativo, el sobregiro es una facilidad en la que puede retirar una cantidad superior al saldo disponible en su cuenta.

Por lo tanto, retire el método para necesidades privilegiadas para implementarlo de nuevo. Pero no cambia el fragmento de código probado en la cuenta de ahorros y cheques. Esta es la ventaja de OOPS

Paso 1) De tal manera que cuando se llama al método "retirado" para la cuenta de ahorro, se ejecuta un método de la clase de cuenta principal

Paso 2) Pero cuando se llama al método de "Retiro" para la cuenta privilegiada (facilidad de sobregiro) se ejecuta el método de retiro definido en la clase privilegiada. Esto es Polimorfismo en OOPs.

Anulación de métodos en Java

La anulación de métodos está redefiniendo un método de superclase en una subclase.

Reglas para la anulación de métodos

  • La firma del método, es decir, el nombre del método, la lista de parámetros y el tipo de devolución deben coincidir exactamente.
  • El método anulado puede ampliar la accesibilidad pero no restringirla, es decir, si es privado en la clase base, la clase secundaria puede hacerlo público pero no viceversa.

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 anulación

Sobrecarga de métodos

Anulación de métodos
La sobrecarga de métodos está en la misma clase, donde más de un método tiene el mismo nombre pero diferentes firmas. La anulación de métodos se produce 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.
Ej:

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

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 OOP es el mecanismo por el cual se pueden definir múltiples métodos con el mismo nombre y firma en la superclase y subclase. La llamada a un método anulado 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 subclase

 Doctor obj = new Surgeon();

Considere la declaración

obj.treatPatient();

Aquí, la variable de referencia "obj" es de la clase principal, pero el objeto al que apunta es de la clase secundaria (como se muestra en el siguiente diagrama de ejemplo de polimorfismo).

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

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

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

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

Diferencia entre polimorfismo estático y dinámico

El polimorfismo estático en Java es un tipo de polimorfismo que recopila 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 información para llamar a un método en tiempo de ejecución.


Polimorfismo estático

Polimorfismo dinámico
Se relaciona con la sobrecarga de métodos. Se relaciona con la anulación de métodos.
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.

Ej:

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

En caso de que una variable de referencia llame a un método anulado, el método que se invocará está determinado por el objeto al que apunta la 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.

Ej:

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

Súper palabra clave en Java

¿Qué pasa 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 super se puede utilizar para acceder a los métodos de la clase principal desde la clase secundaria.

El método tratarPaciente en la clase Cirujano podría escribirse como:

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

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

A continuación, aprenderemos sobre la palabra clave Super, la herencia y el polimorfismo en Java con programas de ejemplo.

Ejemplo:-Para aprender Herencia, 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. Observe la salida.

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

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

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

Resumen

  • El polimorfismo en la Programación Orientada a Objetos ocurre cuando hay una o más clases u objetos relacionados entre sí por herencia. Es la capacidad de un objeto para tomar muchas formas.
  • Method Overriding es redefinir un método de superclase en una subclase.
  • El polimorfismo dinámico en Java es el mecanismo mediante el cual se pueden definir varios métodos con el mismo nombre y firma en la superclase y la subclase.
  • El polimorfismo estático en Java es un tipo de polimorfismo que recopila 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 información para llamar a un método en tiempo de ejecución.
  • La palabra clave Super se puede usar para acceder a los métodos de la clase principal desde la clase secundaria.

Java

  1. Polimorfismo de Java
  2. Tutorial de clase abstracta de C# con ejemplo:¿Qué es la abstracción?
  3. ¿Qué es la interfaz en C# con un ejemplo?
  4. Conceptos de programación orientada a objetos en Java | Qué es, Fundamentos con Ejemplos
  5. Método String Length () en Java:cómo encontrar con el ejemplo
  6. Método Java String charAt() con ejemplo
  7. Método Java String contains() | Comprobar subcadena con ejemplo
  8. Java String termina con () método con ejemplo
  9. Variable estática en Java:¿Qué es el bloque estático y el método? [Ejemplo]
  10. Interfaz vs clase abstracta en Java:¿cuál es la diferencia?
  11. Java BufferedReader:cómo leer un archivo en Java con un ejemplo