Peut-on redéfinir les méthodes statiques en Java?
Réponse de l'IA
sobes.tech IA
Non, il n’est pas possible de redéfinir les méthodes statiques en Java. Les méthodes statiques appartiennent à la classe, pas à une instance spécifique de l’objet. Lorsqu’une méthode statique avec la même signature qu’une méthode statique de la superclasse est héritée, cela ne constitue pas une redéfinition ; cela s’appelle masquage (method hiding). L’appel à une méthode statique est toujours déterminé par le type de la référence, et non par le type de l’objet.
class Parent {
public static void staticMethod() {
System.out.println("Méthode statique dans Parent");
}
}
class Child extends Parent {
// Ce n’est pas une redéfinition, mais un masquage
public static void staticMethod() {
System.out.println("Méthode statique dans Child");
}
}
public class Main {
public static void main(String[] args) {
Parent.staticMethod(); // Appelle la méthode statique de Parent
Child.staticMethod(); // Appelle la méthode statique de Child
Parent p = new Child();
// Appelle la méthode statique de Parent, car le type de référence est Parent
p.staticMethod();
}
}
Dans cet exemple, bien que la variable p fasse référence à un objet Child, l’appel à p.staticMethod() invoque la méthode statique de la classe Parent. Cela démontre que les méthodes statiques ne participent pas au polymorphisme d’exécution, qui est caractéristique de la redéfinition.