Como se diferenciam a despacho estático e dinâmico na programação?
sobes.tech IA
Resposta da IA
A atribuição estática (despacho estático) ocorre durante a compilação. O compilador sabe de antemão qual método será chamado e liga diretamente a chamada a uma implementação específica. Isso garante alto desempenho, mas reduz a flexibilidade.
A atribuição dinâmica (despacho dinâmico) ocorre durante a execução do programa. A chamada do método é determinada pelo tipo do objeto em tempo de execução, o que permite implementar polimorfismo e sobrescrita de métodos. No iOS, isso é frequentemente realizado através do mecanismo runtime do Objective-C, onde as chamadas de métodos passam por uma tabela de mensagens.
Exemplo em Swift:
class Animal {
func sound() {
print("Algum som")
}
}
class Dog: Animal {
override func sound() {
print("Latido")
}
}
let animal: Animal = Dog()
animal.sound() // Vai imprimir "Latido" graças à atribuição dinâmica
Aqui, a chamada sound() é determinada em tempo de execução, o que caracteriza a atribuição dinâmica.