Skip to main content

Was ist dynamische Bindung?

In der Informatik ist die Namensbindung die Assoziation einer Kennung, wie z. B. eine Funktion oder einen variablen Namen, zu einem Abschnitt mit Code oder Daten.In dem häufigsten Szenario, der statischen Bindung, ist diese Zuordnung zum Kompilierzeit bekannt.Bei der dynamischen Bindung ist das von einer Funktion abgebildete Objekt zur Kompilierungszeit nicht bekannt und kann nur während der Programmlaufzeit bestimmt werden.Aus diesem Grund wird die dynamische Bindung auch als späte Bindung bezeichnet.Obwohl die dynamische Bindung Flexibilität bietet, die mit statischer Bindung nicht verfügbar sind, beinhaltet sie auch mehr Leistungskosten als die statische Bindung.

Die dynamische Bindung ist eng mit dem Polymorphismus verbunden, das Teil der objektorientierten Programmierung ist.Durch Polymorphismus kann der gleiche Methodenname auf unterschiedliche Weise implementiert werden.Wenn der Code nicht so geschrieben ist, dass die genaue Methode zum Kompilierungszeit nicht bestimmt werden kann, muss dynamische Bindung verwendet werden.Eine Kreisunterklasse der Form würde jedoch GetArea anders implementieren als eine quadratische Unterklasse.Wenn ein neues Objekt aus Typform erstellt wird und Code die Methode GetArea in dieser Form aufruft, kann der Compiler keine Möglichkeit haben zu wissen, ob die Form ein Kreis oder ein Quadrat ist, und es wird daher nicht wissenWelche GetArea -Methode anzurufen.Dies ist ein Beispiel für die dynamische Bindung, da die richtige GetArea -Methode nur zur Laufzeit zugeordnet wird, nachdem das Programm weiß, welche Art von Form das Objekt ist.

Dynamische Bindung ermöglicht die Flexibilität der Verwendung abstrakter Methoden, ohne zu wissen, welche spezifische Implementierung wirdverwendet werden.Im Formbeispiel könnte der Code geschrieben werden, um eine dynamische Bindung zu vermeiden, indem diese Logik explizit verwendet wird: Wenn die Form ein Kreis ist, rufen Sie die Kreise GetArea -Methode auf.Wenn die Form ein Quadrat ist, rufen Sie die spezifische GetArea -Methode für Quadrate an.Der Vorteil der dynamischen Bindung besteht darin, dass der Code sauberer und wartbarer ist als die Alternative.Im Beispiel für statische Bindungen gibt es Code -Duplikation und der Code muss jederzeit aktualisiert werden, wenn eine neue Art von Form hinzugefügt wird.

Die Nachteile der dynamischen Bindung sind Leistung und Sicherheit.Bei der statischen Bindung weiß der Compiler genau, welchen Code er aufrufen soll, und kann den Code optimieren, um effizienter auszuführen.Die Sicherheitstypsicherheit kann ein Problem sein, da bei einigen Implementierungen der dynamischen Bindung eine Methode auf ein Objekt aufgerufen werden kann, das die Methode nicht unterstützt.Beispielsweise könnte die GetArea-Methode ein Objekt aufgerufen werden, das keine Form ist und daher keine GetArea-Methode hat, was zu einem Laufzeitfehler führen kann.Die statische Bindung würde dieses Szenario verhindern, indem ein Kompilierfehler erhöht wird.