Répartition dynamique des méthodes en Java
- Envoi de méthodes dynamiques en Java
- Importance de la répartition dynamique des méthodes en Java
- Envoi de méthode dynamique avec exemple de code 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.
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.
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.
- L’envoi de méthode dynamique permet à Java de prendre en charge la substitution de méthode nécessaire au polymorphisme d’exécution.
- Il permet à la classe enfant d’incorporer ses fonctions et de mettre à jour l’implémentation selon les exigences du projet.
- 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
.