Sobes.tech
Junior — Middle

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.