Frage

Ich verstehe, wie die Implementierung der dynamischen Bindung und der Unterschied zwischen statischer und dynamischer Bindung funktioniert. Ich habe nur Probleme, mein Gehirn um die Definition der dynamischen Bindung zu wickeln. Grundsätzlich ist es ein Laufzeitbindungstyp.

War es hilfreich?

Lösung

Grundsätzlich bedeutet dynamische Bindung, dass die Adresse für einen Funktionsaufruf nicht in das Codesegment Ihres Programms fest codiert ist, wenn sie in die Assemblersprache übersetzt wird und stattdessen von anderer Stelle erhalten wird, dh Stapelvariablen, Array-Lookups usw.

Auf einer höheren Ebene, wenn Sie eine Codezeile haben:

foo(bar) //Calls a funciton

Wenn es zur Kompilierung genau bekannt sein kann, welche Funktion dies aufruft, ist dies eine statische Bindung. Wenn FOO mehrere Funktionen bedeuten könnte, je nach Kompilierungszeit, die nicht erkennbar sind, ist dies eine dynamische Bindung.

Andere Tipps

I understand it being evident in polymorphism. Typically when creating multiple classes that derive from a base class. If each one of the derived classes contains a function that each one uses. The base class can be used to execute a function of the derived classs and it will be properly call the correct function.

For example:

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

will print: woof meow

My interpretation hopefully it helps.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top