Junior
Quand une méthode est-elle considérée comme redéfinie?
sobes.tech IA
Réponse de l'IA
La méthode est considérée comme redéfinie dans les cas suivants :
- Elle est déclarée dans une classe fille.
- Elle a le même nom que la méthode dans la classe parente.
- Elle a la même signature (nombre et types de paramètres) et ordre des paramètres.
- Elle a un type de retour compatible avec celui de la méthode dans la classe parente (co-variance, si applicable).
- Elle a un modificateur d'accès identique ou plus large que celui de la méthode dans la classe parente (dans la plupart des langages orientés objet).
- La méthode parente est déclarée comme virtuelle, abstraite ou d'interface (dans les langages qui nécessitent une indication explicite de la possibilité de redéfinition, par exemple C# avec le mot-clé
virtual).
Exemple en Java :
// Classe parente
class SuperClass {
// Méthode pouvant être redéfinie
public void display() {
System.out.println("Ceci est la méthode display de SuperClass.");
}
}
// Classe fille
class SubClass extends SuperClass {
// Méthode redéfinie display
@Override // Annotation pour vérifier la redéfinition lors de la compilation
public void display() {
System.out.println("Ceci est la méthode display de SubClass.");
}
}
Exemple en Python :
# Classe parente
class SuperClass:
# Méthode pouvant être redéfinie
def display(self):
print("Ceci est la méthode display de SuperClass.")
# Classe fille
class SubClass(SuperClass):
# Méthode redéfinie display
def display(self):
print("Ceci est la méthode display de SubClass.")
L'essentiel est de conserver le nom et la signature de la méthode, tout en modifiant son comportement dans la classe fille.
Différence importante avec la surcharge (overloading) : la surcharge consiste à déclarer plusieurs méthodes avec le même nom dans une classe, mais avec des signatures différentes. La redéfinition (overriding) consiste à déclarer une méthode dans une classe fille avec le même nom et la même signature que dans la classe parente.