Polymorphisme en Java

Le polymorphisme en Java est un concept par lequel nous pouvons effectuer une même action de différentes manières. Le polymorphisme est dérivé de 2 mots grecs : poly et morphs. Le mot « poly » signifie beaucoup et « morphs » signifie formes. Donc le polymorphisme signifie de nombreuses formes.

Il existe deux types de polymorphisme en Java : le polymorphisme à la compilation et le polymorphisme à l’exécution. Nous pouvons effectuer le polymorphisme en java par la surcharge de méthode et la surcharge de méthode.

Si vous surchargez une méthode statique en Java, c’est l’exemple du polymorphisme en temps de compilation. Ici, nous nous concentrerons sur le polymorphisme d’exécution en java.

Polymorphisme d’exécution en Java

Le polymorphisme d’exécution ou Dynamic Method Dispatch est un processus dans lequel un appel à une méthode surchargée est résolu à l’exécution plutôt qu’à la compilation.

Dans ce processus, une méthode surchargée est appelée par la variable de référence d’une superclasse. La détermination de la méthode à appeler est basée sur l’objet auquel fait référence la variable de référence.

Comprenons d’abord l’upcasting avant le Runtime Polymorphism.

Upcasting

Si la variable de référence de la classe Parent fait référence à l’objet de la classe Child, on parle d’upcasting. Par exemple:

Upcasting en Java

Pour l’upcasting, nous pouvons utiliser la variable de référence de type classe ou de type interface. Par exemple :

Ici, la relation de la classe B serait :

B IS-A AB IS-A IB IS-A Object

Puisque Object est la classe racine de toutes les classes en Java, nous pouvons donc écrire B IS-A Object.

Exemple de polymorphisme d’exécution Java

Dans cet exemple, nous créons deux classes Bike et Splendor. La classe Splendor étend la classe Bike et surcharge sa méthode run(). Nous appelons la méthode run par la variable de référence de la classe Parent. Puisqu’elle fait référence à l’objet de la sous-classe et que la méthode de la sous-classe surcharge la méthode de la classe Parent, la méthode de la sous-classe est invoquée à l’exécution.

Comme l’invocation de la méthode est déterminée par la JVM et non par le compilateur, on parle de polymorphisme à l’exécution.

Test it Now

Output:

running safely with 60km.

Exemple de polymorphisme à l’exécution de Java : Bank

Envisageons un scénario où Bank est une classe qui fournit une méthode pour obtenir le taux d’intérêt. Cependant, le taux d’intérêt peut différer selon les banques. Par exemple, les banques SBI, ICICI et AXIS fournissent un taux d’intérêt de 8,4 %, 7,3 % et 9,7 %.

Exemple de polymorphisme d'exécution Java de la banque

Note : Cet exemple est également donné dans la méthode overriding mais il n’y avait pas d’upcasting.

Testez-le maintenant

Sortie:

SBI Rate of Interest: 8.4ICICI Rate of Interest: 7.3AXIS Rate of Interest: 9.7

Exemple de polymorphisme d’exécution Java : Forme

Testez-le maintenant

Sortie:

drawing rectangle...drawing circle...drawing triangle...

Exemple de polymorphisme d’exécution Java : Animal

Test it Now

Output:

eating bread...eating rat...eating meat...

Polymorphisme d’exécution Java avec membre de données

Une méthode est surchargée, pas les membres de données, donc le polymorphisme d’exécution ne peut pas être réalisé par les membres de données.

Dans l’exemple donné ci-dessous, les deux classes ont un membre de données speedlimit. Nous accédons au membre de données par la variable de référence de la classe Parent qui fait référence à l’objet de la sous-classe. Comme nous accédons au membre de données qui n’est pas surchargé, donc il accédera toujours au membre de données de la classe Parent.

Règle : Le polymorphisme à l’exécution ne peut pas être réalisé par les membres de données.

Testez-le maintenant

Sortie:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *