Qu'est-ce que l'héritage et le polymorphisme dans les types de données de référence?
sobes.tech IA
Réponse de l'IA
L'héritage est un mécanisme permettant à une nouvelle classe (sous-classe/enfant) d'hériter des propriétés (champs) et du comportement (méthodes) d'une classe existante (super-classe/parent), en étendant ou en redéfinissant la fonctionnalité. Cela favorise la réutilisation du code et établit des relations de type "est un" (is-a).
Le polymorphisme est la capacité d'objets de différentes classes à répondre différemment à un même nom de méthode, en fonction de leur type spécifique lors de l'exécution. Il offre flexibilité et extensibilité au code, permettant de traiter des objets de sous-classes via une référence à la super-classe.
Dans les types de données par référence (classes), ces concepts jouent un rôle clé :
- Héritage : La sous-classe a accès aux membres de la super-classe et peut ajouter les siens ou modifier le comportement des méthodes héritées (surcharge - overriding). Un objet de la sous-classe peut être utilisé partout où un objet de la super-classe est attendu.
- Polymorphisme : Différents objets liés à une même hiérarchie d'héritage peuvent être traités par le même code, en appelant la même méthode, mais l'implémentation de cette méthode sera spécifique au type d'objet lors de l'exécution.
Exemple en Java :
// Super-classe (parent)
class Animal {
public void makeSound() {
System.out.println("Fait un son");
}
}
// Sous-classe (enfant), hérite de Animal
class Dog extends Animal {
// Redéfinition de la méthode de la super-classe
@Override
public void makeSound() {
System.out.println("Wouf!");
}
}
// Sous-classe (enfant), hérite de Animal
class Cat extends Animal {
// Redéfinition de la méthode de la super-classe
@Override
public void makeSound() {
System.out.println("Miaou!");
}
}
// Exemple de polymorphisme
public class PolymorphismExample {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // objet de la super-classe
Animal myDog = new Dog(); // objet de la sous-classe, référence à la super-classe
Animal myCat = new Cat(); // objet de la sous-classe, référence à la super-classe
myAnimal.makeSound(); // Affiche : Fait un son
myDog.makeSound(); // Affiche : Wouf! (polymorphisme - appel de la méthode Dog)
myCat.makeSound(); // Affiche : Miaou! (polymorphisme - appel de la méthode Cat)
}
}