Dynamische Bindung

Dynamische Bindung

In der Informatik, speziell der objektorientierten Programmierung, ist die Dynamische Bindung (engl. dynamic binding/dynamic dispatch) ein Begriff, der den Umgang des Compilers mit polymorphen Methoden beschreibt.

Man spricht von dynamischer Bindung, wenn ein Methodenaufruf zur Laufzeit anhand des tatsächlichen (dynamischen) Typs eines Objektes aufgelöst wird.

Erklärung

Bei Klassenhierarchien kann eine Variable, deren Typ auf eine bestimmte Klasse festgelegt ist, auch Instanzen von deren Unterklassen beinhalten, in denen eventuell Methoden der Oberklasse überschrieben worden sind.

Ruft man nun für die das in der Variablen gespeicherte Objekt eine bestimmte Methode auf, gibt es zwei Kandidaten:
1. Die Methode der Oberklasse
2. Die überschriebene Version der Unterklasse

Von dynamischer Bindung spricht man, wenn in solchen Fällen zur Laufzeit in Abhängigkeit von der Tatsache, ob das Objekt eine Instanz der Ober- oder einer Unterklasse ist, die jeweilige Version der Methode aufgerufen wird.

Wird stattdessen immer die Methode der Oberklasse genutzt, so spricht man von statischer Bindung.

Viele objektorientierte Programmiersprachen erlauben, für jede Methode einzeln festzulegen, ob statische oder dynamische Bindung anzuwenden ist. Diese Eigenschaft wird mitvererbt.

Die dynamische Bindung ist von enormer Bedeutung für die objektorientierte Programmierung, da die Flexibilität der Vererbung nur durch dynamische Bindung zum Tragen kommt.

Beispiel

Ein typisches Beispiel zu dynamischer Bindung in Java:

  class Saeugetier {
    void steckbrief() {
      System.out.println("Ich bin ein Säugetier.");
    }
  }
 
  class Gepard extends Saeugetier {
    void steckbrief() {
      System.out.println("Ich bin ein Gepard.");
    }
  }
 
  class Elefant extends Saeugetier {
    void steckbrief() {
      System.out.println("Ich bin ein Elefant.");
    }
  }
 
  public class DynamischeBindungBeispiel {
    public static void main(String[] args) {
      java.util.List<Saeugetier> tiere = new java.util.ArrayList<Saeugetier>();
      tiere.add(new Saeugetier());
      tiere.add(new Gepard());
      tiere.add(new Elefant());
 
      for (Saeugetier tier : tiere) {
        tier.steckbrief();
      }
    }
  }
Ausgabe

Ich bin ein Säugetier.
Ich bin ein Gepard.
Ich bin ein Elefant.

Implementierung

Die dynamische Bindung erfordert eine Typprüfung zur Laufzeit. Sie muss den Quelltext daher erweitern und führt zu einer (geringfügigen) Verlangsamung des Programms. Üblicherweise legt der Compiler für jede virtuelle Methode eine Tabelle virtueller Methoden an, welche für die möglichen dynamischen Typen Referenzen auf die aufzurufenden Methoden enthält.


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Bindung — Anbindung; Bündnis; Brücke (übertragen); Verbindung; Bindebogen; Befestigung; Festigung; gegenseitige Verbindung; Kopplung; Koppelung; Querverbindung; …   Universal-Lexikon

  • Dynamische IP-Adresse — IP Adressen werden in Computernetzen, die auf dem Internetprotokoll (IP) basieren, verwendet, um Daten von ihrem Absender zum vorgesehenen Empfänger transportieren zu können. Ein Beispiel derartiger Computernetze ist das Internet. Ähnlich der… …   Deutsch Wikipedia

  • Common-Lisp — Inoffizielles Lisp Logo Basisdaten Paradigmen: multiparadigmatisch: funktional, prozedural …   Deutsch Wikipedia

  • Common LISP — Inoffizielles Lisp Logo Basisdaten Paradigmen: multiparadigmatisch: funktional, prozedural …   Deutsch Wikipedia

  • Dynamic dispatch — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. In der Informatik, speziell der objektorientierten Programmierung,… …   Deutsch Wikipedia

  • Dynamisches Binden — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. In der Informatik, speziell der objektorientierten Programmierung,… …   Deutsch Wikipedia

  • Common Lisp — Inoffizielles Lisp Logo Basisdaten Paradigmen: multiparadigmatisch: funktional, prozedural, modular, objektorientiert …   Deutsch Wikipedia

  • Globale Variable — In der Programmierung ist eine Variable im allgemeinsten Sinne einfach ein Behälter für Rechnungsgrößen („Werte“), die im Verlauf eines Rechenprozesses auftreten. Im Normalfall wird eine Variable durch einen Namen bezeichnet und hat eine… …   Deutsch Wikipedia

  • Lokale Variable — In der Programmierung ist eine Variable im allgemeinsten Sinne einfach ein Behälter für Rechnungsgrößen („Werte“), die im Verlauf eines Rechenprozesses auftreten. Im Normalfall wird eine Variable durch einen Namen bezeichnet und hat eine… …   Deutsch Wikipedia

  • Speicherinterferenz — In der Programmierung ist eine Variable im allgemeinsten Sinne einfach ein Behälter für Rechnungsgrößen („Werte“), die im Verlauf eines Rechenprozesses auftreten. Im Normalfall wird eine Variable durch einen Namen bezeichnet und hat eine… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”