Question

Je comprends le fonctionnement de la liaison dynamique et la différence entre la liaison statique et la liaison dynamique. Je ne parviens pas à comprendre le sens de la liaison dynamique. En gros, il s’agit d’un type de liaison au moment de l’exécution.

Était-ce utile?

La solution

Fondamentalement, la liaison dynamique signifie que l'adresse d'un appel de fonction n'est pas codée en dur dans le segment de code de votre programme lorsqu'elle est traduite en langage assembleur, mais est obtenue ailleurs, c.-à-d. variables de pile, recherches de tableaux, etc.

À un niveau supérieur, si vous avez une ligne de code:

foo(bar) //Calls a funciton

S'il est possible de savoir exactement au moment de la compilation quelle fonction sera appelée, il s'agit d'une liaison statique. Si foo peut signifier plusieurs fonctions dépendant d'éléments inconnus à la compilation, il s'agit d'une liaison dynamique.

Autres conseils

Je comprends que cela soit évident dans le polymorphisme. Généralement, lors de la création de plusieurs classes dérivées d'une classe de base. Si chacune des classes dérivées contient une fonction que chacune utilise. La classe de base peut être utilisée pour exécuter une fonction des classes dérivées et sera appelée correctement la fonction correcte.

Par exemple:

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();
}

imprimera: trame miaou

Mon interprétation, espérons-le, aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top