Compreendendo a vinculação dinâmica
-
05-07-2019 - |
Pergunta
Entendo como funciona a implementação da vinculação dinâmica e também a diferença entre vinculação estática e dinâmica. Só estou tendo problemas para entender a definição de vinculação dinâmica.Basicamente diferente é um tipo de ligação em tempo de execução.
Solução
Basicamente, a ligação dinâmica significa que o endereço para uma chamada de função não é codificado no segmento de código do seu programa quando é traduzido para a linguagem assembly e, em vez disso, é obtido de outro lugar, ou seja,variáveis de pilha, pesquisas de array, etc.
Em um nível superior, se você tiver uma linha de código:
foo(bar) //Calls a funciton
Se puder ser conhecido em tempo de compilação exatamente qual função isso chamará, isso é ligação estática.Se foo puder significar múltiplas funções dependendo de coisas que não podem ser conhecidas em tempo de compilação, isso é uma ligação dinâmica.
Outras dicas
Eu entendo que é evidente no polimorfismo. Normalmente, ao criar várias classes que derivam de uma classe base. Se cada uma das classes derivadas contiver uma função que cada uma usa. A classe base pode ser usada para executar uma função das classes derivadas e chamará corretamente a função correta.
Por exemplo:
class Animal
{
void talk();
}
class Dog extends Animal
{
public void talk() { System.out.println("woof"); }
}
class Cat extends Animal
{
public void talk() { System.out.println("meow"); }
}
....
Animal zoo[2];
zoo[0] = new Dog();
zoo[1] = new Cat();
for(Animal animalToggle: zoo)
{
animalToggle.talk();
}
Imprimirá: Woof mEow
Minha interpretação espero que ajude.