Junior — Middle
Cum se diferențiază metodele statice în programarea orientată pe obiecte de metodele care sunt suprascrise în clasele derivate?
sobes.tech AI
Răspuns de la AI
Metodele statice în Java aparțin clasei în sine, nu instanțelor. Sunt apelate prin numele clasei și nu pot fi suprascrise în clasele derivate, deoarece nu participă la polimorfism.
Diferit de acestea, metodele care pot fi suprascrise (non-statice) aparțin obiectelor și suportă polimorfismul dinamic. La apelarea unei metode printr-o referință la clasa de bază, implementarea reală este determinată de tipul obiectului în timpul execuției.
Exemplu:
class Parent {
static void staticMethod() {
System.out.println("Metoda statică a părinților");
}
void instanceMethod() {
System.out.println("Metoda de instanță a părinților");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Metoda statică a copilului");
}
@Override
void instanceMethod() {
System.out.println("Metoda de instanță a copilului");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Afișează: Metoda statică a părinților
p.instanceMethod(); // Afișează: Metoda de instanță a copilului
}
}
Aici, metoda statică este apelată după tipul referinței (Parent), iar metoda non-statică după tipul obiectului (Child).