Was ist dynamische Bindung?

In der Informatik ist die Namensbindung die Assoziation einer Kennung wie 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 zugeordnete Objekt zum 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. 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.

Zum Beispiel ein "Form" CLASS könnte eine Methode namens "GetArea" haben, da jede Form einen Bereich hat. Eine "Kreis" -Subklasse von "Form" würde jedoch "GetArea" anders implementieren als eine "quadratische" Unterklasse. Wenn ein neues Objekt aus Typ "Form" erstellt wird und Code die Methode "GetArea" in dieser Form aufruft, hat der Compiler keine Möglichkeit zu wissen, ob die Form ein Kreis oder ein Quadrat ist, und es wird daher nicht wissen, welche GetArea -Methode sie anrufen soll. Dies ist ein Beispiel für die dynamische Bindung, da die richtige GetArea -Methode nur zur Laufzeit abgebildet wird, nachdem das Programm weiß, welche Art von Form das Objekt ist.

Dynamische Bindung ermöglicht die Flexibilität, abstrakte Methoden zu verwenden, ohne zu wissen, welche spezifische Implementierung verwendet wird. Im Beispiel "Form" 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 GetArea -Methode des Kreises auf. Wenn die Form ein Quadrat ist, rufen Sie die spezifische GetArea -Methode für aufQuadrate. 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 anrufen soll, und kann den Code optimieren, um effizienter auszuführen. Die Sicherheit von Typ 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. Zum Beispiel könnte die "GetArea" -Methode auf ein Objekt aufgerufen werden, das keine Form hat 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.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?