Sobes.tech
Junior

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 classe (classe dérivée, classe enfant) d'hériter des propriétés et du comportement d'une autre classe (classe de base, classe parent). Cela favorise la réutilisation du code et la création de hiérarchies de classes.

Le polymorphisme est la capacité d'objets de différentes classes à réagir différemment à un même message (appel de méthode), en fonction de leur type concret. Dans le contexte de l'héritage, cela se manifeste souvent par la redéfinition des méthodes de la classe de base dans la classe dérivée.

Exemple (Java):

// Classe de base
class Animal {
    public void makeSound() {
        System.out.println("L'animal fait un son");
    }
}

// Classe dérivée
class Dog extends Animal {
    @Override // Redéfinition de la méthode
    public void makeSound() {
        System.out.println("Wouf!");
    }
}

// Classe dérivée
class Cat extends Animal {
    @Override // Redéfinition de la méthode
    public void makeSound() {
        System.out.println("Miaou!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Objet Dog, mais référence de type Animal
        Animal myCat = new Cat(); // Objet Cat, mais référence de type Animal

        myDog.makeSound(); // Appelle la méthode de Dog
        myCat.makeSound(); // Appelle la méthode de Cat
    }
}

Dans cet exemple:

  • Héritage : Les classes Dog et Cat héritent de Animal.
  • Polymorphisme : Les variables myDog et myCat font référence à des objets Dog et Cat respectivement, bien qu'elles aient le type Animal. Lors de l'appel à makeSound(), la méthode de l'objet est exécutée, pas celle du type de la référence.