Dasturlashda statik va dinamik taqsimot qanday farq qiladi?
sobes.tech AI
AIdan javob
Statik taqsimot (static dispatch) dasturlash vaqtida yuz beradi. Kompilyator oldindan qaysi metod chaqirilishini biladi va chaqiruvni to'g'ridan-to'g'ri aniq bir amalga oshirish bilan bog'laydi. Bu yuqori unumdorlikni ta'minlaydi, lekin moslashuvchanlikni kamaytiradi.
Dinamik taqsimot (dynamic dispatch) dastur bajarilayotganda yuz beradi. Metod chaqiruvi obyektning turiga qarab bajariladigan vaqtda aniqlanadi, bu polimorfizm va metodlarni qayta yozishni amalga oshirish imkonini beradi. iOSda bu ko'pincha Objective-C runtime mexanizmi orqali amalga oshiriladi, bu yerda metod chaqiruvlar xabarlar jadvali orqali amalga oshiriladi.
Swiftda misol:
class Animal {
func sound() {
print("Ba'zi bir ovoz")
}
}
class Dog: Animal {
override func sound() {
print("Bark")
}
}
let animal: Animal = Dog()
animal.sound() // Dinamik taqsimot tufayli "Bark" chiqaradi
Bu yerda sound() chaqiruvi bajarilayotgan vaqtda aniqlanadi, bu esa dinamik taqsimotdir.