Java / Spring - Héritage, Polymorphisme et Injection de Dépendance - Partie 2

Table des matières
Il s'agit de la deuxième partie d'une série de tutoriels axés sur la révision des sujets de base du langage Java pour préparer le lecteur à l'utilisation du framework Spring. La première partie de cette série de tutoriels est disponible ici. Dans ce tutoriel, nous parlerons de polymorphisme.
Le mot polymorphisme vient du grec « poly » qui signifie plusieurs et « morpho » qui signifie forme et en général c'est à cela qu'il se réfère, la capacité de prendre des formes multiples. Dans la programmation orientée objet, nous parlons de variables ou de références qui peuvent prendre la forme de plusieurs objets différents.
Maintenant que vous savez d'où vient le concept, essayons de le relier au langage Java. Comme nous l'avons vu dans le tutoriel précédent, la notion d'« Héritage » nous permet d'établir une relation parent-enfant entre 2 classes privées :
Image envoyée
Dans cet exemple, la relation d'héritage est entre la classe Chien et la classe Animal, classe Chat et la classe Animal et la classe Cheval et la classe Animal, notez qu'entre Chien, Chat Oui Cheval il n'y a pas de relation directe.
En utilisant ce diagramme comme base, nous pouvons dire qu'un chien EST un animal, un chat EST un animal et un cheval EST un animal. Lorsque vous pouvez exprimer la relation de cette façon en Java, nous pouvons dire qu'une variable de la classe Animal est polymorphe puisqu'il peut prendre la forme d'un Cheval, d'un Chat ou un Chien.
Dans le tutoriel précédent nous avons aussi vu que TOUTES les classes héritent directement ou indirectement de la classe Objet, dans ce cas le diagramme est légèrement plus complet si on le définit comme ceci :
Image envoyée
Et cela peut être étendu à plusieurs niveaux (essentiellement, le niveau maximum dépendra de votre JVM mais est normalement supérieur à 40). Ainsi, un animal EST un objet, un chat EST un animal et un chat (par transitivité) EST un objet.
Java vous permet ensuite d'utiliser des références de classe aux points hauts de cette structure pour pointer vers des objets en dessous d'eux dans la structure. Par exemple:
 public static void main (String [] args) {Object o1 = new Object (); Animal a1 = nouvel Animal (); Chien p = nouveau Chien (); o1 = a1; o1 = p; a1 = p; Objet o2 = nouvel Animal (); Objet o3 = nouveau Chien (); Animal a2 = nouveau Chien (); booléen b1 = o1 == o2; booléen b2 = o1 == o3; booléen b3 = o1 == a2; if (b1 || b2 || b3) {Ne rien faire (); }} 

Comme vous pouvez le voir, une variable Objet peut faire référence à un objet Animal ou à un objet Chien tout comme une variable Animal peut faire référence à un objet Chien. La capacité de polymorphisme qui en découle nous amène à pouvoir manipuler un objet sans avoir à savoir exactement quel objet EST, voyons l'exemple de méthode suivant :
public static void doSomething (Animal a) {a.getColorDePelo (); }

Lorsqu'une application utilise cette méthode, elle ne sait pas quel animal elle reçoit par paramètre, cela peut être un chien, cela peut être un chat, cela peut être un cheval ou plus tard une taupe, un éléphant, un mandrill ou toute autre classe qui est du type Animal.
La clé de cette propriété est qu'elle permet au programme d'utiliser des méthodes de certaines sous-classes sans savoir précisément de quel type d'Animal il s'agit et ainsi de maintenir un niveau d'abstraction important par rapport aux futures implémentations de la classe Animal.
Dans le prochain tutoriel, nous approfondirons le sujet du polymorphisme, nous verrons ce que sont les interfaces et comment programmer en se concentrant sur les interfaces, ce qui aidera à comprendre les tutoriels suivants.
Le sujet est devenu un peu plus long que prévu mais ne désespérez pas ! Il est important de bien comprendre ces concepts avant de démarrer l'injection de dépendances pour comprendre le fonctionnement de Spring.
J'espère que nous continuerons avec ces tutoriels semaine après semaine, n'oubliez pas de laisser vos commentaires jusqu'à la prochaine fois !Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave