Dynamisches Binden
aus Wikipedia, der freien Enzyklopädie
Die Artikel Dynamisches Binden und Dynamische Bindung überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Die Diskussion über diese Überschneidungen findet hier statt. Bitte äußere dich dort, bevor du den Baustein entfernst. |
Dynamisches Binden (engl. dynamic dispatch) bezeichnet den Vorgang bei objektorientierten Programmiersprachen, dass eine aufzurufende Methode zur Laufzeit in Abhängigkeit vom dynamischen Typ des Objekts ausgewählt wird. Existieren mehrere Versionen einer Methode (durch Vererbung), so wird die speziellste gewählt.
Häufig erfolgt die Implementierung des dynamischen Bindens durch eine Tabelle virtueller Methoden.
[Bearbeiten] Beispiel
In dem folgenden Java-Programm ist der Parameter obj
der Methode print
vom Typ A
. Diesem Parameter wird zuerst eine Instanz der Klasse A
, dann eine Instanz der Klasse B
zugewiesen. Am Ergebnis sieht man, dass je nach dem aktuellen Typ der Variablen die entsprechende toString
-Methode der zugehörigen Klasse aufgerufen wird. Der Compiler kann also nicht schon zur Übersetzungszeit die konkrete Implementierung der Methode toString
festlegen, dies muss zur Laufzeit passieren. Diesen Vorgang der Auswahl der konkreten Implementierung bezeichnet man als dynamisches Binden.
public class A { public String toString(){ return "-A-"; } } public class B extends A { public String toString(){ return "-B-"; } } public class C { private static void print(A obj) { System.out.println(obj.toString()); } public static void main(String[] args) { A obj; obj = new A(); print(obj); // Führt zum Aufruf der Methode toString der Klasse A obj = new B(); print(obj); // Führt zum Aufruf der Methode toString der Klasse B } }
Ausgabe:
-A- -B-