Sobes.tech
Middle

Poate fi suprascrisă metodele statice în Java?

sobes.tech AI

Răspuns de la AI

Nu, nu se pot suprascrie metode statice în Java. Metodele statice aparțin clasei, nu unui anumit exemplu de obiect. Când o metodă statică cu aceeași semnătură ca și metoda statică a superclasei este moștenită, acest lucru nu constituie o suprascriere; se numește ascundere (method hiding). Apelul metodei statice este întotdeauna determinat de tipul referinței, nu de tipul obiectului.

class Parent {
    public static void staticMethod() {
        System.out.println("Metodă statică în Parent");
    }
}

class Child extends Parent {
    // Acesta nu este o suprascriere, ci o ascundere
    public static void staticMethod() {
        System.out.println("Metodă statică în Child");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent.staticMethod(); // Se apelează metoda statică din Parent
        Child.staticMethod();  // Se apelează metoda statică din Child

        Parent p = new Child();
        // Se apelează metoda statică din Parent, deoarece tipul referinței este Parent
        p.staticMethod();
    }
}

În acest exemplu, chiar dacă variabila p face referire la un obiect Child, apelul p.staticMethod() invocă metoda statică a clasei Parent. Acest lucru demonstrează că metodele statice nu participă la polimorfismul de execuție, caracteristic pentru suprascriere.