Sobes.tech
Junior — Middle

Ako sa líšia statické a dynamické viazanie metód v Jave a aké sú ich vlastnosti?

sobes.tech AI

Odpoveď od AI

V Jave sa líši statické a dynamické viazanie metód v tom, kedy sa vyberá konkrétna implementácia metódy na volanie.

  • Statické viazanie (static binding) nastáva počas kompilácie. Zahŕňa volania na statické metódy, súkromné metódy a finálne metódy. Prekladateľ vie, ktorú metódu volať, a viaže volanie s konkrétnou implementáciou.

  • Dynamické viazanie (dynamic binding) sa deje počas behu programu. Je charakteristické pre virtuálne metódy (bežné inštančné metódy), ktoré môžu byť prepísané v podtriedach. JVM počas behu určuje, ktorú metódu volať na základe skutočného typu objektu.

Príklad:

class Animal {
    void sound() {
        System.out.println("Nejaký zvuk");
    }
    static void staticMethod() {
        System.out.println("Statická metóda v Animal");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Štekot");
    }
    static void staticMethod() {
        System.out.println("Statická metóda v Dog");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.sound(); // dynamické viazanie, zavolá Dog.sound()
        a.staticMethod(); // statické viazanie, zavolá Animal.staticMethod()
    }
}

Zhrnutie: dynamické viazanie zabezpečuje polymorfizmus, zatiaľ čo statické poskytuje rýchlejšiu a predvídateľnejšiu funkčnosť pre metódy, ktoré nemôžu byť prepísané.