Sobes.tech
Junior

Quand se produit la redéfinition d'une méthode (overriding) ?

sobes.tech IA

Réponse de l'IA

La redéfinition de méthode (overriding) se produit dans la hiérarchie d'héritage lorsqu'une classe fille fournit sa propre implémentation d'une méthode déjà définie dans la classe parente avec le même nom, la même signature (coïncidence du type et du nombre de paramètres) et le même type de retour (ou covariant dans le cas du type d'objet de retour).

Caractéristiques clés:

  • Héritage: La redéfinition n'est possible que dans le contexte de l'héritage (classes parente et enfant).
  • Signature: La méthode dans la classe enfant doit avoir la même signature (nom, nombre et types de paramètres) et le même type de retour (ou son sous-type covariant) que la méthode dans la classe parente.
  • Accessibilité: La méthode qui est redéfinie doit être accessible à la classe enfant (généralement public, protected).
  • Polymorphisme: La redéfinition est la base du polymorphisme à l'exécution, permettant aux objets de la classe enfant de répondre à l'appel de la méthode de manière propre, même si on y accède via une référence à la classe parente.

Exemple (Java):

// Classe parente
class Animal {
    // Méthode qui sera redéfinie
    public void makeSound() {
        System.out.println("Animal fait un son");
    }
}

// Classe enfant
class Dog extends Animal {
    // Redéfinition de la méthode makeSound()
    @Override // L'annotation @Override est optionnelle mais recommandée
    public void makeSound() {
        System.out.println("Chien aboie");
    }
}

Exemple d'utilisation:

// Créer un objet Dog
Animal myDog = new Dog();
// Appeler la méthode. La version redéfinie dans Dog sera appelée
myDog.makeSound(); // Affiche: Chien aboie

// Créer un objet Animal
Animal someAnimal = new Animal();
// Appeler la méthode. La version dans Animal sera appelée
someAnimal.makeSound(); // Affiche: Animal fait un son