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.