Junior — Middle
Čime se razlikuju statičke metode u objektno-orijentisanom programiranju od metoda koje se prepisuju u podklasama?
sobes.tech АИ
Одговор од АИ
Staticke metode u Javi pripadaju samoj klasi, a ne instancama. One se pozivaju putem imena klase i ne mogu biti prepisane u podklasama, jer ne učestvuju u polimorfizmu.
Za razliku od njih, metode koje se mogu prepisati (ne statičke) pripadaju objektima i podržavaju dinamički polimorfizam. Pri pozivu metode putem reference na osnovnu klasu, stvarna implementacija se određuje tipom objekta tokom izvršavanja.
Primer:
class Parent {
static void staticMethod() {
System.out.println("Staticka metoda roditelja");
}
void instanceMethod() {
System.out.println("Metoda instance roditelja");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Staticka metoda deteta");
}
@Override
void instanceMethod() {
System.out.println("Metoda instance deteta");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Ispisuje: Staticka metoda roditelja
p.instanceMethod(); // Ispisuje: Metoda instance deteta
}
}
Ovde, statička metoda se poziva na osnovu tipa reference (Parent), a nestatička na osnovu tipa objekta (Child).