Sobes.tech
Middle
241

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.