Répartition dynamique des méthodes en Java

Mehvish Ashiq 15 février 2024
  1. Envoi de méthodes dynamiques en Java
  2. Importance de la répartition dynamique des méthodes en Java
  3. Envoi de méthode dynamique avec exemple de code en Java
Répartition dynamique des méthodes en Java

Ce didacticiel explique la répartition dynamique des méthodes en Java. Il parle de sa définition technique et de son importance et explique avec des exemples de code.

Envoi de méthodes dynamiques en Java

Décomposons les mots et pensons à Dispatch comme décidant quelle fonction (méthode) appeler. Le mot dynamique indique qu’il est déterminé au moment de l’exécution.

Dans les termes les plus simples, nous pouvons dire que la fonction/méthode à exécuter est décidée au moment de l’exécution.

Compte tenu de la définition technique, l’envoi de méthode dynamique (également appelé polymorphisme d’exécution) est un mécanisme utilisé pour résoudre un appel à une méthode surchargée au moment de l’exécution plutôt qu’au moment de la compilation.

Lorsque nous appelons la méthode redéfinie dans la classe enfant en utilisant une référence, Java décide quelle méthode sera exécutée en fonction du type d’objet auquel elle se réfère. Comprenons la définition en utilisant les deux captures d’écran de code suivantes.

Concentrez-vous sur la capture d’écran suivante où nous avons trois classes nommées Shape, Rectangle et la classe Main. Le Shape est la superclasse, et Rectangle est la classe enfant.

La méthode main possède deux objets de type Shape et Rectangle et enregistre leurs références dans des variables Shape et Rectangle.

Ces variables appellent la méthode display() de la classe respective. Par exemple, si nous appelons shape.display(), il sera décidé à la compilation que le display() de la classe Shape est appelé car le Shape contient la référence du Shape classe.

envoi de méthode dynamique en java - première partie de la définition

Maintenant, modifiez le code comme indiqué dans la capture d’écran suivante. Ici, la méthode main contient les deux objets, un pour la classe Shape et l’autre pour la classe Rectangle mais les deux (la variable Shape et Rectangle) contiennent la référence de la classe Shape.

Alors, comment le programme décide-t-il quelle méthode surchargée doit être appelée ? C’est là que la répartition dynamique des méthodes joue son rôle.

Ici, Java détermine quelle méthode doit être exécutée en fonction du type d’objet auquel elle se réfère.

Si l’objet est de type Rectangle, alors la méthode display() de la classe Rectangle sera appelée, et si l’objet est de type Shape, alors la méthode display() de la classe Shape la classe serait appelée. Et toutes ces décisions sont prises au moment de l’exécution.

C’est ce que nous appelons le polymorphisme d’exécution ou l’envoi de méthode dynamique.

envoi de méthode dynamique en java - définition deuxième partie

Importance de la répartition dynamique des méthodes en Java

Les points suivants augmentent l’importance de l’utilisation de la répartition dynamique de la méthode.

  1. L’envoi de méthode dynamique permet à Java de prendre en charge la substitution de méthode nécessaire au polymorphisme d’exécution.
  2. Il permet à la classe enfant d’incorporer ses fonctions et de mettre à jour l’implémentation selon les exigences du projet.
  3. Il permet à la superclasse de définir une fonction/méthode qui serait partagée avec ses classes enfants et permet à ces classes enfants de mettre à jour l’implémentation de la fonction.

Envoi de méthode dynamique avec exemple de code en Java

Exemple de code :

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();
  }
}

Production:

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

Ici, les classes Rectangle et Triangle étendent la classe Forme. Ces classes ont une méthode display() que nous sommes censés appeler la méthode main.

La méthode main a deux objets, un pour le type Rectangle et l’autre pour le type Triangle, mais les variables de référence Rectangle et Triangle font référence à la même classe mère nommée Shape.

Comment savoir quelle fonction serait appelée ? Ici, la méthode de répartition dynamique entre en scène.

N’oubliez pas que nous utilisons également la liaison dynamique et la conversion ascendante dans les deux codes de code suivants.

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

La liaison dynamique utilise l’objet (instance de la classe, qui est new Rectangle() et new Triangle() ici) pour résoudre l’appel de méthode à l’exécution.

Ici, l’upcasting est également utilisé car les variables de référence de la classe parent (rectangle et triangle) font référence aux classes enfants Rectangle et 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

Article connexe - Java Method