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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top