Cours Java - Polymorphisme en Programmation Orientée Objet (POO)
Introduction
Le polymorphisme en POO permet de manipuler des objets de types différents à travers une même interface ou classe parente. Cela rend le code plus flexible et extensible.
Types de Polymorphisme en Java
- Polymorphisme de Compilation (Surcharge) : Même méthode avec des paramètres différents.
- Polymorphisme d'Exécution (Redéfinition) : Méthodes redéfinies dans des sous-classes.
Exemple : Jeu Vidéo - Polymorphisme avec Personnages
1. Création de la Classe Parente Character
// Classe parente représentant un personnage général
public class Character {
protected String name;
public Character(String name) {
this.name = name;
}
// Méthode générique
public void performAction() {
System.out.println(name + " attend...");
}
}
2. Création de Sous-Classes Spécialisées
Warrior (Guerrier)
public class Warrior extends Character {
public Warrior(String name) {
super(name);
}
@Override
public void performAction() {
System.out.println(name + " attaque avec son épée !");
}
}
Mage (Magicien)
public class Mage extends Character {
public Mage(String name) {
super(name);
}
@Override
public void performAction() {
System.out.println(name + " lance un sort magique !");
}
}
3. Utilisation du Polymorphisme
public class Game {
public static void main(String[] args) {
// Création d'un tableau de personnages
Character[] characters = {
new Warrior("Arthas"),
new Mage("Jaina"),
new Character("Paysan")
};
System.out.println("--- Début des Actions ---");
// Utilisation du polymorphisme
for (Character character : characters) {
character.performAction();
}
}
}
Concepts Importants
- Redéfinition des Méthodes (
@Override) : Les sous-classes peuvent redéfinir les méthodes héritées. - Classe Abstraite et Interface : Le polymorphisme fonctionne aussi avec des classes abstraites et des interfaces.
- Tableaux ou Listes de Type Parent : Utilisez un tableau de type parent pour gérer des objets de types différents.
Résumé
Le polymorphisme rend le code flexible, extensible et réutilisable. Utilisez-le pour concevoir des systèmes complexes où plusieurs types d'objets peuvent être traités uniformément.