Privacy Policy Cookie Policy Terms and Conditions Dynamisches Binden - Wikipedia

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.
Dieser Artikel erläutert Dynamisches Binden in der Begriffsbedeutung des Aufrufes von virtuellen Methoden (engl. dynamic binding oder dynamic dispatch).
  • für das dynamische Linken einer DLL (engl. „Dynamic Linking“) siehe Linker (Programm).

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-

[Bearbeiten] Siehe auch

Andere Sprachen

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -