Junior
Quand une méthode est-elle considérée comme redéfinie (overriding) ?
sobes.tech IA
Réponse de l'IA
Une méthode est considérée comme redéfinie lorsqu'une classe fille déclare une méthode avec la même signature (nom de la méthode, nombre et types de paramètres dans le même ordre) que dans la classe parente. De plus :
- La méthode dans la classe parente ne doit pas être déclarée comme
final(ou un modificateur équivalent dans d'autres langages), ce qui empêche la redéfinition. - Le niveau d'accès de la méthode redéfinie dans la classe fille ne peut pas être plus restrictif que celui de la méthode dans la classe parente.
- La méthode redéfinie peut retourner le même type que la méthode dans la classe parente, ou un type covariant (sous-type du type original).
- La méthode redéfinie ne peut pas lancer des exceptions plus générales (ou incompatibles) que celles déclarées dans la méthode de la classe parente.
- Les méthodes statiques ne peuvent pas être redéfinies, seulement masquées (hidden).
Lorsqu'on appelle la méthode redéfinie via une référence à la classe parente, mais avec un objet de la classe fille, c'est la version de la classe fille qui s'exécute (polymorphisme).
// Exemple en Java
class Parent {
public void display() { // Méthode dans la classe parente
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Cette méthode ne peut pas être redéfinie
}
class Child extends Parent {
@Override // L'annotation @Override aide le compilateur à vérifier que la méthode est bien redéfinie
public void display() { // Méthode redéfinie - même signature
System.out.println("Child display");
}
}