Dynamische Bindung - LinkFang.de





Dynamische Bindung


Dieser Artikel oder Abschnitt bedarf einer Überarbeitung.
Dieser Artikel handelt von der dynamischen Bindung in der objektorientierten Programmierung. Für weitere Bedeutungen siehe Dynamische Bindung (Begriffsklärung).

In der Informatik, speziell der objektorientierten Programmierung, ist die dynamische Bindung (englisch 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 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.

Implementierung

Das dynamische Binden kann auf zwei unterschiedlichen Arten implementiert werden.

Virtual Method Table

Hauptartikel: Tabelle virtueller Methoden

Der Compiler legt für jeden Typ mit virtuellen Methoden eine Tabelle virtueller Methoden an, die Referenzen auf die aufzurufenden Methoden enthält.

Dispatch Tree

Der Compiler fügt bei jedem Aufruf einer dynamischen Methode eine Verzweigung ein, die Anhand des Objekttyps die jeweils richtige Methode auswählt.

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.


Kategorien: Objektorientierte Programmierung

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Dynamische Bindung (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.