Java — Polymorphisme (POO)
Le polymorphisme est un des piliers de la programmation orientée objet (POO). Il permet d’utiliser une même interface pour manipuler différents types d’objets.
1. Idée simple
une même méthode peut avoir plusieurs comportements
➡️ selon l’objet utilisé
2. Exemple simple
class Animal {
void speak() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
void speak() {
System.out.println("Bark");
}
}
class Cat extends Animal {
void speak() {
System.out.println("Meow");
}
}
Utilisation
Animal a1 = new Dog();
Animal a2 = new Cat();
a1.speak(); // Bark
a2.speak(); // Meow
même méthode → comportement différent
3. Types de polymorphisme
Polymorphisme à l’exécution (override)
redéfinition de méthode dans une sous-classe
Polymorphisme à la compilation (overloading)
class MathUtils {
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
}
même nom, paramètres différents
4. Règle importante
le type de la référence compte :
Animal a = new Dog();
- type compilé :
Animal - type réel :
Dog
Java appelle la méthode du type réel
5. Pourquoi c’est utile
- code flexible
- extensible
- moins de duplication
- meilleur design
6. Pièges fréquents
- confusion override vs overload
- oublier le type réel
- penser que tout est dynamique
7. Questions classiques
Q1
polymorphisme = ? même méthode, comportements différents
Q2
override ou overload ? override = runtime
Q3
méthode appelée dépend de quoi ? type réel
8. À retenir
- polymorphisme = flexibilité
- override → runtime
- overload → compilation
- basé sur l’héritage
🧾 En résumé
- une interface commune
- plusieurs implémentations
- comportement dynamique
Le polymorphisme permet d’écrire du code plus propre et évolutif.