Retour au cours

Pillier 3 de l'OOP : Polymorphisme (Exécution et Compilation)

Maîtrise de Java : De Zéro à Développeur Professionnel (Un parcours en 50 leçons)

Leçon 22 : Pillier 3 de l'OOP : Polymorphisme

Polymorphisme signifie "plusieurs formes". En Java, il nous permet de traiter des objets de différentes classes de manière uniforme, tant que ces classes partagent un parent ou une interface commune.

1. Polymorphisme à la compilation (Surcharge de méthode)

Ceci est réalisé en ayant plusieurs méthodes au sein de la même classe qui partagent le même nom mais ont des signatures différentes (nombre ou types de paramètres différents).

java public class Calculator { // Méthode 1 : additionne deux entiers public int add(int a, int b) { return a + b; }

// Méthode 2 : additionne trois entiers (surchargée)
public int add(int a, int b, int c) { return a + b + c; }

// Méthode 3 : additionne deux doubles (surchargée par type)
public double add(double a, double b) { return a + b; }

}

Lors de la compilation, le compilateur détermine quelle méthode appeler en fonction des arguments fournis.

2. Polymorphisme à l'exécution (Redéfinition de méthode)

C'est le cœur de l'aiguillage dynamique. Cela se produit lorsqu'un objet est référencé par une variable de référence de sa classe parente, et que la méthode appelée est une méthode redéfinie.

Concept clé : La méthode exécutée est déterminée par le type d'objet réel (objet à l'exécution), et non par le type de référence.

java public class Vehicle { public void move() { System.out.println("Le véhicule se déplace."); } } public class Truck extends Vehicle { @Override public void move() { System.out.println("Le camion gronde sur la route."); } } public class Bicycle extends Vehicle { @Override public void move() { System.out.println("Le vélo pédale silencieusement."); } }

// Le polymorphisme à l'exécution en action : Vehicle v1 = new Truck(); // Le type de référence est Vehicle, le type d'objet est Truck Vehicle v2 = new Bicycle();

v1.move(); // Appelle le move() de Truck v2.move(); // Appelle le move() de Bicycle

Le polymorphisme est essentiel pour écrire un code flexible et extensible, en particulier lors de la manipulation de collections d'objets divers mais liés.