4.11. Syntaxe de base Java : polymorphisme

Le polymorphisme est l'un des quatre piliers fondamentaux de la programmation orientée objet (POO), avec l'encapsulation, l'héritage et l'abstraction. En Java, le polymorphisme permet à un objet d'être référencé de plusieurs manières, ce qui est crucial pour la réutilisation du code et la création de systèmes flexibles et extensibles. Dans ce chapitre, nous explorerons le concept de polymorphisme, comment il se manifeste en Java et comment vous pouvez l'utiliser pour améliorer vos programmes.

Qu'est-ce que le polymorphisme ?

Le polymorphisme, du grec « polys » (plusieurs) et « morphē » (forme), fait référence à la capacité d'une méthode, d'un objet ou d'une variable à être représenté de plusieurs manières. Dans le contexte de Java, cela signifie généralement qu'une référence d'une classe parent peut pointer vers un objet d'une classe enfant, permettant ainsi d'invoquer des méthodes de telle manière que l'implémentation spécifique de la méthode soit déterminée au moment de l'exécution (polymorphisme d'exécution ).

Types de polymorphisme en Java

Il existe deux principaux types de polymorphisme en Java :

  • Polymorphisme de compilation (ou statique) : également connu sous le nom de surcharge de méthodes, il se produit lorsque deux ou plusieurs méthodes de la même classe ont le même nom, mais des paramètres différents. La décision quant à la méthode qui sera appelée est prise au moment de la compilation.
  • Polymorphisme d'exécution (ou dynamique) : également appelé remplacement de méthode, il se produit lorsqu'une classe enfant fournit une implémentation spécifique d'une méthode déjà fournie par sa classe parent ou son interface. La décision concernant l'implémentation de la méthode à exécuter est prise au moment de l'exécution.

Polymorphisme d'exécution

Pour mieux comprendre le polymorphisme d'exécution, considérons l'exemple suivant :

classe Animal { parler nul() { System.out.println("L'animal fait un bruit"); } } la classe Chien étend Animal { parler nul() { System.out.println("Le chien aboie : Woof !"); } } la classe Chat étend Animal { parler nul() { System.out.println("Le chat miaule : Miaou !"); } } classe publique TestPolymorphisme { public static void main (String[] arguments) { Animal monAnimal = new Animal(); Animal monDog = new Dog(); Animal monChat = nouveau Chat(); monAnimal.talk(); monDog.talk(); monChat.talk(); } }

Dans cet exemple, la classe Animal a une méthode talk(), qui est remplacée par les classes Dog et Cat code>. Dans la méthode main, nous créons trois références de type Animal, mais deux d'entre elles pointent vers des objets de sous-classes spécifiques. Lorsque la méthode talk() est invoquée sur les références meuCachorro et meuCat, les implémentations spécifiques de Dog et < code >Cat sont appelés respectivement. Cela démontre le polymorphisme d'exécution.

Avantages du polymorphisme

Le polymorphisme offre plusieurs avantages, notamment :

  • Flexibilité : permet aux programmes d'appeler des méthodes dont ils ne savent pas nécessairement comment elles sont implémentées au moment de la compilation.
  • Réutilisation du code : Avec le polymorphisme, il est possible d'écrire du code qui fonctionne avec des classes qui n'ont pas encore été créées.
  • Maintenabilité : le polymorphisme vous aide à créer un code plus facile à comprendre et à maintenir.

Interfaces et polymorphisme

Les interfaces en Java sont un autre mécanisme qui favorise le polymorphisme. Une interface est un contrat qui spécifie quelles méthodes une classe doit implémenter, sans fournir l'implémentation elle-même. Lorsqu'une classe implémente une interface, toute référence de type de cette interface peut pointer vers un objet de cette classe.

Interface animale { conversation nulle (); } la classe Chien implémente Animal { public void parler() { System.out.println("Le chien aboie : Woof !"); } } la classe Cat implémente Animal { public void parler() { System.out.println("Le chat miaule : Miaou !"); } } classe publique TestInterfacePolymorphism { public static void main (String[] arguments) { Animal monDog = new Dog(); Animal monChat = nouveau Chat(); monDog.talk(); monChat.talk(); } }

Dans cet exemple, l'interface Animal définit une méthode talk() qui doit être implémentée par toute classe qui l'implémente. Les classes Dog et Cat fournissent leurs propres implémentations de la méthode talk(). Dans la méthode main, les références de type Animal sont utilisées pour invoquer le mMéthode talk() sur les objets Dog et Cat, démontrant le polymorphisme.

Considérations finales

Le polymorphisme est un outil puissant de programmation Java, vous permettant d'écrire du code à la fois général et spécifique. Il est essentiel pour créer des applications robustes et flexibles. En comprenant et en appliquant correctement le polymorphisme, vous pouvez tirer le meilleur parti du paradigme orienté objet, en créant des systèmes faciles à étendre et à maintenir au fil du temps.

Répondez maintenant à l’exercice sur le contenu :

_Lequel des éléments suivants est un exemple de polymorphisme d'exécution en Java ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Syntaxe Java de base : interfaces 16

Page suivante de lebook gratuit :

Syntaxe Java de base : interfaces

Temps de lecture estimé : 0 minutes

Téléchargez l'application pour obtenir une certification gratuite et écouter des cours en arrière-plan, même avec l'écran éteint.

+ 9 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

60 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours vidéo et livres
audio gratuits