Sobes.tech
Junior — Middle

Објасните принцип динамичког рутирања позива метода у објектно оријентисаном програмирању.

sobes.tech АИ

Одговор од АИ

Dinamičko usmeravanje poziva metoda (dynamic dispatch) je mehanizam u objektno-orijentisanom programiranju koji omogućava da se odredi koja će implementacija metode biti pozvana, na osnovu stvarnog tipa objekta tokom izvršavanja, a ne tokom kompajliranja.

U Javi, ovo se postiže putem virtuelnih metoda: ako je metoda deklarisana u osnovnoj klasi i prepisana u podklasi, poziv putem reference na osnovni tip će pozvati verziju metode koja odgovara stvarnom tipu objekta.

Primer:

class Animal {
    void sound() {
        System.out.println("Neki zvuk");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Lajanje");
    }
}

Animal a = new Dog();
a.sound(); // Ispisaće "Lajanje", iako je tip promenljive Animal

Na ovaj način, dinamičko usmeravanje omogućava implementaciju polimorfizma, čineći ponašanje programa fleksibilnim i proširivim.

Iza kulisa, JVM koristi tabele virtuelnih metoda (vtable) za brzo određivanje odgovarajuće implementacije tokom izvršavanja.