Types de polymorphisme en java – Polymorphisme d’exécution et de compilation

Dans le dernier tutoriel, nous avons discuté du polymorphisme en Java. Dans ce guide, nous verrons des types de polymorphisme. Il existe deux types de polymorphisme en java:
1) Polymorphisme statique également connu sous le nom de polymorphisme au moment de la compilation
2) Polymorphisme dynamique également connu sous le nom de polymorphisme à l’exécution

Polymorphisme au moment de la compilation (ou polymorphisme statique)

Le polymorphisme résolu pendant le temps de compilation est connu sous le nom de polymorphisme statique. La surcharge de méthode est un exemple de polymorphisme au moment de la compilation.
Surcharge de méthode: Cela nous permet d’avoir plus d’une méthode ayant le même nom, si les paramètres des méthodes sont différents en nombre, en séquence et en types de données de paramètres. Nous avons déjà discuté de la surcharge de méthode ici: Si vous n’avez pas lu ce guide, référez-vous à: Surcharge de méthode en Java

Exemple de polymorphisme statique

La surcharge de méthode est l’une des façons dont Java prend en charge le polymorphisme statique. Ici, nous avons deux définitions de la même méthode add() que la méthode add serait appelée est déterminée par la liste de paramètres au moment de la compilation. C’est la raison pour laquelle cela est également connu sous le nom de polymorphisme du temps de compilation.

class SimpleCalculator{ int add(int a, int b) { return a+b; } int add(int a, int b, int c) { return a+b+c; }}public class Demo{ public static void main(String args) { SimpleCalculator obj = new SimpleCalculator(); System.out.println(obj.add(10, 20)); System.out.println(obj.add(10, 20, 30)); }}

Sortie:

3060

Polymorphisme d’exécution (ou polymorphisme dynamique)

Il est également connu sous le nom de Répartition de méthode dynamique. Le polymorphisme dynamique est un processus dans lequel un appel à une méthode remplacée est résolu au moment de l’exécution, c’est pourquoi il est appelé polymorphisme d’exécution. J’ai déjà discuté en détail de la substitution de méthode dans un tutoriel séparé, référez-vous à: Substitution de méthode en Java.

Exemple
Dans cet exemple, nous avons deux classes ABC et XYZ. ABC est une classe parent et XYZ est une classe enfant. La classe enfant remplace la méthode myMethod() de la classe parente. Dans cet exemple, nous avons un objet de classe enfant assigné à la référence de classe parente afin de déterminer quelle méthode serait appelée, le type de l’objet serait déterminé au moment de l’exécution. C’est le type d’objet qui détermine quelle version de la méthode serait appelée (pas le type de référence).

Pour comprendre le concept de substitution, vous devez avoir les connaissances de base de l’héritage en Java.

class ABC{ public void myMethod(){System.out.println("Overridden Method"); }}public class XYZ extends ABC{ public void myMethod(){System.out.println("Overriding Method"); } public static void main(String args){ABC obj = new XYZ();obj.myMethod(); }}

Sortie:

Overriding Method

Lorsqu’une méthode remplacée est appelée via une référence de classe parente, le type de l’objet détermine la méthode à exécuter. Ainsi, cette détermination est faite au moment de l’exécution.
Étant donné que les deux classes, la classe enfant et la classe parent ont la même méthode animalSound. La version de la méthode (classe enfant ou classe parent) qui sera appelée est déterminée à l’exécution par la JVM.

Quelques exemples plus importants:

ABC obj = new ABC();obj.myMethod();// This would call the myMethod() of parent class ABCXYZ obj = new XYZ();obj.myMethod();// This would call the myMethod() of child class XYZABC obj = new XYZ();obj.myMethod();// This would call the myMethod() of child class XYZ

Dans le troisième cas, la méthode de la classe enfant doit être exécutée car la méthode à exécuter est déterminée par le type d’objet et comme l’objet appartient à la classe enfant, la version de la classe enfant de myMethod() est appelée.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

More: