Junior — Middle
En quoi les méthodes statiques en programmation orientée objet diffèrent-elles des méthodes redéfinies dans les classes dérivées?
sobes.tech IA
Réponse de l'IA
Les méthodes statiques en Java appartiennent à la classe elle-même, et non aux instances. Elles sont appelées via le nom de la classe et ne peuvent pas être redéfinies dans les classes dérivées, car elles ne participent pas au polymorphisme.
En revanche, les méthodes qui peuvent être redéfinies (non statiques) appartiennent aux objets et supportent le polymorphisme dynamique. Lorsqu'une méthode est appelée via une référence à la classe de base, la mise en œuvre réelle est déterminée par le type de l'objet au moment de l'exécution.
Exemple:
class Parent {
static void staticMethod() {
System.out.println("Méthode statique de Parent");
}
void instanceMethod() {
System.out.println("Méthode d'instance de Parent");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Méthode statique de Child");
}
@Override
void instanceMethod() {
System.out.println("Méthode d'instance de Child");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Affiche: Méthode statique de Parent
p.instanceMethod(); // Affiche: Méthode d'instance de Child
}
}
Ici, la méthode statique est appelée par le type de référence (Parent), et la non statique par le type de l'objet (Child).