Despacho dinámico de métodos en Java

Mehvish Ashiq 30 enero 2023 26 agosto 2022 Java Java Method
  1. Envío de métodos dinámicos en Java
  2. Importancia del envío de métodos dinámicos en Java
  3. Envío de método dinámico con ejemplo de código en Java
Despacho dinámico de métodos en Java

Este tutorial educa sobre el envío de métodos dinámicos en Java. Habla sobre su definición técnica e importancia y explica con ejemplos de código.

Envío de métodos dinámicos en Java

Desglosemos las palabras y pensemos en Dispatch como una decisión a qué función (método) llamar. La palabra Dinámico indica que se determina en tiempo de ejecución.

En las palabras más simples, podemos decir qué función/método se debe ejecutar se decide en tiempo de ejecución.

Teniendo en cuenta la definición técnica, el envío de métodos dinámicos (también conocido como polimorfismo en tiempo de ejecución) es un mecanismo que se utiliza para resolver una llamada a un método anulado en tiempo de ejecución en lugar de en tiempo de compilación.

Cuando llamamos al método anulado en la clase secundaria usando una referencia, Java decide qué método se ejecutará según el tipo de objeto al que hace referencia. Entendamos la definición usando las siguientes dos capturas de pantalla del código.

Concéntrese en la siguiente captura de pantalla donde tenemos tres clases llamadas Shape, Rectangle, y la clase Main. La clase Shape es la superclase, y Rectangle es la clase secundaria.

El método main tiene dos objetos de tipo Shape y Rectangle y guarda sus referencias en las variables shape y rectangle.

Estas variables llaman al método display() de la clase respectiva. Por ejemplo, si llamamos a shape.display(), se decidirá en tiempo de compilación que se está llamando a display() de la clase Shape porque shape contiene la referencia de Shape clase.

Despacho de método dinámico en java - definición primera parte

Ahora, cambie el código como se muestra en la siguiente captura de pantalla. Aquí, el método main contiene los dos objetos, uno para la clase Shape y el otro para la clase Rectangle pero ambos (la variable shape y rectangle) contienen la referencia de la clase Shape.

Entonces, ¿cómo decide el programa qué método anulado debe llamarse? Aquí es donde el envío de métodos dinámicos juega su papel.

Aquí, Java determina qué método debe ejecutarse según el tipo de objeto al que se refiere.

Si el objeto es de tipo Rectangle, entonces se llamaría al método display() de la clase Rectangle, y si el objeto es de tipo Shape, entonces se llamaría al método display() de la clase Shape. se llamaría la clase. Y todas estas decisiones se toman en tiempo de ejecución.

Esto es lo que llamamos polimorfismo en tiempo de ejecución o despacho de método dinámico.

Despacho de métodos dinámicos en java - definición, segunda parte

Importancia del envío de métodos dinámicos en Java

Los siguientes puntos aumentan la importancia de utilizar el método dinámico de envío.

  1. El envío del método dinámico permite que el método de soporte de Java anule lo necesario para el polimorfismo en tiempo de ejecución.
  2. Permite que la clase secundaria incorpore sus funciones y actualice la implementación según los requisitos del proyecto.
  3. Permite que la superclase defina una función/método que se compartiría con sus clases secundarias y permite que estas clases secundarias actualicen la implementación de la función.

Envío de método dinámico con ejemplo de código en Java

Código de ejemplo:

class Shape {
  Shape(){}
  void display() {
    System.out.println("I am in the Shape class");
  }
}

class Rectangle extends Shape {
  Rectangle(){}
  void display() {
    System.out.println("I am in the Rectangle class");
  }
}

class Triangle extends Shape {
  Triangle(){}
  void display() {
    System.out.println("I am in the Triangle class");
  }
}

public class Main {
  public static void main(String args[]) {
    Shape rectangle = new Rectangle();
    Shape triangle = new Triangle();

    rectangle.display();
    triangle.display();
  }
}

Producción:

I am in the Rectangle class
I am in the Triangle class

Aquí, las clases Rectangle y Triangle extienden la clase Shape. Estas clases tienen un método display() al que se supone que llamamos al método main.

El método main tiene dos objetos, uno para la clase Rectangle y otro para la clase Triangle, pero las variables de referencia rectangle y triangle se refieren a la misma clase padre llamada Shape.

¿Cómo saber qué función sería llamada? Aquí, el método de envío dinámico entra en escena.

Recuerde, también estamos usando enlaces dinámicos y upcasting en los siguientes dos códigos de código.

Shape rectangle = new Rectangle();
Shape triangle = new Triangle();

El enlace dinámico usa el objeto (instancia de la clase, que es new Rectangle() y new Triangle() aquí) para resolver la llamada al método en tiempo de ejecución.

Aquí también se utiliza el upcasting porque las variables de referencia de la clase principal (rectangle y triangle) hacen referencia a las clases secundarias Rectangle y Triangle.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - Java Method

  • Comparar ArrayLists en Java
  • Llamar asincrónicamente a un método en Java
  • Filtro de Stream en Java
  • Usando el método System.exit() en Java
  • Ocultación de métodos en Java