Sobes.tech
Junior — Middle

Kuidas erinevad staatiline ja dünaamiline jaotus programmeerimises?

sobes.tech AI

Vastus AI-lt

Statiline saatmine (static dispatch) toimub kompileerimise ajal. Kompilaator teab ette, milline meetod kutsutakse ja seob otse kutsumise konkreetse rakendusega. See tagab kõrge jõudluse, kuid vähendab paindlikkust.

Dünaamiline saatmine (dynamic dispatch) toimub programmi käivitamise ajal. Meetodi kutsumine määratakse objekti tüübi järgi jooksvalt, mis võimaldab teostada polümorfismi ja meetodite ülekirjutamist. iOS-is realiseeritakse seda sageli Objective-C runtime-mehhanismi kaudu, kus meetodite kutsed toimuvad sõnumi tabeli kaudu.

Näide Swiftis:

class Animal {
    func sound() {
        print("Mingi hääl")
    }
}

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

let animal: Animal = Dog()
animal.sound() // Trükib "Haugumine" tänu dünaamilisele saatmisele

Siin määratakse sound() kutsumine jooksvalt, mis on näide dünaamilisest saatmisest.