Sobes.tech
Junior — Middle

Ako sa líši statické a dynamické smerovanie v programovaní?

sobes.tech AI

Odpoveď od AI

Statické smerovanie (static dispatch) sa deje počas kompilácie. Kompilátor vopred vie, ktorá metóda bude volaná, a priamo spojí volanie s konkrétnou implementáciou. To zabezpečuje vysoký výkon, ale znižuje flexibilitu.

Dynamické smerovanie (dynamic dispatch) sa deje počas behu programu. Volanie metódy je určené typom objektu v čase behu, čo umožňuje implementáciu polymorfizmu a prepisovanie metód. V iOS sa to často realizuje prostredníctvom mechanizmu runtime Objective-C, kde volania metód prechádzajú cez tabuľku správ.

Príklad v Swift:

class Animal {
    func sound() {
        print("Nejaký zvuk")
    }
}

class Dog: Animal {
    override func sound() {
        print("Štek")
    }
}

let animal: Animal = Dog()
animal.sound() // Vytlačí "Štek" vďaka dynamickému smerovaniu

Tu je volanie sound() určené počas behu, čo je príklad dynamického smerovania.