Ligação dinâmica (programação orientada a objetos)

(Redirecionado de Dynamic dispatch)

Na programação orientada a objetos, ligação dinâmica significa determinar a exata implementação de uma requisição com base no nome da requisição (operação) e no objeto que executa a operação no tempo de execução. Geralmente acontece quando uma função membro de uma classe derivada é invocada usando um ponteiro para sua classe base. A implementação de uma classe derivada será invocada ao invés da operação da classe base. Isto permite a substituição de uma implementação particular usando a mesma interface, o que por sua vez habilita o uso de polimorfismo.

Exemplo editar

Suponha que todas as formas de vida são mortais. Na programação orientada a objetos, nós podemos dizer que as classes Pessoa e Planta devem implementar a interface Mortal, a qual contém o método Morrer().

Pessoas e Plantas morrem em diferentes condições; por exemplo, Plantas não possuem um coração que pára. Ligação dinâmica é a prática de descobrir qual método invocar no tempo de execução. Por exemplo, se nós escrevermos

void Matar(Mortal m) {
  m.Morrer();
}

não fica claro se é uma Pessoa ou Planta, e assim se Planta.Morrer() ou Pessoa.Morrer() deveriam ser invocados no objeto. Com ligação dinâmica, o objeto m é examinado no tempo de execução, e o método correspondente à classe atual é chamado.