Aller au contenu

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.


Voir aussi