Sobes.tech
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).