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.