Sobes.tech
Junior — Middle

Proqramlaşdırmada statik və dinamik yönləndirmə necə fərqlənir?

sobes.tech Süni İntellekt

AI-dan cavab

Statik göndərmə (static dispatch) tərtib zamanı baş verir. Tərtibçi əvvəlcədən bilir ki, hansı metod çağırılacaq və çağırışı birbaşa konkret həyata keçirmə ilə əlaqələndirir. Bu yüksək performans təmin edir, lakin elastikliyi azaldır.

Dinamik göndərmə (dynamic dispatch) proqramın icrası zamanı baş verir. Metod çağırışı obyektin növünə görə vaxtında müəyyən edilir və bu, çox formallıq və metodların üst-üstə qoyulmasını mümkün edir. iOS-da bu çox vaxt Objective-C runtime mexanizmi vasitəsilə həyata keçirilir, burada metod çağırışları mesajlar cədvəri vasitəsilə edilir.

Swift-də nümunə:

class Animal {
    func sound() {
        print("Bəzi səs")
    }
}

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

let animal: Animal = Dog()
animal.sound() // Dinamik göndərmə sayəsində "Havlama" çap edir

Burada sound() çağırışı vaxtında müəyyən edilir, bu da dinamik göndərmədir.