Sobes.tech
Junior — Middle

Kako se razlikuju statičko i dinamičko povezivanje metoda u Javi i koje su njihove osobine?

sobes.tech АИ

Одговор од АИ

U Javi, statičko i dinamičko povezivanje metoda razlikuje se u trenutku kada se bira konkretna implementacija metode za poziv.

  • Statičko povezivanje (static binding) dešava se tokom kompajliranja. Uključuje pozive statičkih metoda, privatnih metoda i finalnih metoda. Kompajler zna koju metodu treba pozvati i povezuje poziv sa konkretnom implementacijom.

  • Dinamičko povezivanje (dynamic binding) dešava se tokom izvršavanja programa. Karakteristično je za virtuelne metode (obične metode instance), koje mogu biti prepisane u podklasama. JVM tokom izvršavanja određuje koju metodu treba pozvati na osnovu stvarnog tipa objekta.

Primer:

class Animal {
    void sound() {
        System.out.println("Neki zvuk");
    }
    static void staticMethod() {
        System.out.println("Staticka metoda u Animal");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Lajanje");
    }
    static void staticMethod() {
        System.out.println("Staticka metoda u Dog");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.sound(); // dinamičko povezivanje, pozvaće Dog.sound()
        a.staticMethod(); // statičko povezivanje, pozvaće Animal.staticMethod()
    }
}

Ukratko, dinamičko povezivanje omogućava polimorfizam, dok statičko pruža bržu i predvidljiviju funkcionalnost za metode koje se ne mogu prepisati.