Quels mécanismes de mise en œuvre du polymorphisme existent en Java?
sobes.tech IA
Réponse de l'IA
-
Polymorphisme à la compilation (polymorphisme statique) : Il est réalisé par la surcharge de méthodes (method overloading). Les méthodes ont le même nom, mais des signatures différentes (nombre, type ou ordre des arguments).
class Calculator { // Surcharge de la méthode add public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Polymorphisme à l'exécution (polymorphisme dynamique) : Il est réalisé par la redéfinition de méthodes (method overriding). La méthode dans la classe fille a la même signature que dans la classe parent et fournit sa propre implémentation. La décision de quelle méthode appeler est prise au moment de l'exécution en fonction du type réel de l'objet.
class Animal { public void sound() { System.out.println("Animal fait un son"); } } class Dog extends Animal { // Redéfinition de la méthode sound @Override public void sound() { System.out.println("Chien aboie"); } } class Cat extends Animal { // Redéfinition de la méthode sound @Override public void sound() { System.out.println("Chat miaule"); } } -
Références à la superclasse / interface : Les objets de sous-classes peuvent être assignés à des références de superclasses ou d'interfaces qu'ils implémentent. Cela permet de traiter de manière uniforme des objets de types différents via une référence commune. L'appel à une méthode redéfinie via une telle référence entraîne l'exécution de la version de la méthode du type réel de l'objet.
Animal myAnimal = new Dog(); // Attribution d'un objet Dog à une référence de type Animal myAnimal.sound(); // Appelle la méthode redéfinie sound() de la classe Dog