Unterschied zwischen statischer und dynamischer Bindung

Schlüsseldifferenz - statisch Bindung vs. dynamische Bindung
 

Programmiersprachen wie Java und C # unterstützen Object Oriented Programming (OOP). Es ermöglicht das Erstellen von Software mithilfe von Objekten. Es gibt viele Objekte in einem Softwaresystem oder einem Programm. Diese Objekte verfügen über Attribute und Methoden. Attribute beschreiben die Merkmale. Methoden beschreiben die Aktionen, die das Objekt ausführen kann. Daten werden mithilfe von Methoden durch Objekte geleitet. Die erforderlichen Werte werden über Methodenaufrufe mit Parametern gesendet. Die tatsächliche Implementierung der Methode ist in der Methodendefinition enthalten. Es gibt eine Verbindung zwischen einem Methodenaufruf und einer Methodendefinition. Es ist als verbindlich bekannt. Es gibt zwei Arten von Bindungen. Sie sind statisch und dynamisch gebunden. Das Hauptunterschied zwischen statischer Bindung und dynamischer Bindung ist das, Bei der statischen Bindung wird die Bindung zur Kompilierzeit aufgelöst, während die dynamische Bindung zur Laufzeit aufgelöst wird, dh zur tatsächlichen Ausführungszeit. Dieser Artikel beschreibt den Unterschied zwischen diesen beiden Bindungsmechanismen.

INHALT

1. Übersicht und Schlüsseldifferenz
2. Was ist statische Bindung?
3. Was ist dynamische Bindung?
4. Ähnlichkeiten zwischen statischer und dynamischer Bindung
5. Side-by-Side-Vergleich - Statische Bindung und dynamische Bindung in tabellarischer Form
6. Zusammenfassung

Was ist statische Bindung??

Bindung ist die Verbindung zwischen einem Methodenaufruf und Methodendefinitionen.

Abbildung 01: Statische Bindung und dynamische Bindung

Siehe das unten in Java geschriebene Programm.

öffentliche Klasse A

public void method1 ()

System.out.println ("Methode1");

public void method2 ()

System.out.println ("Methode2");

public static void main (String [] args)

Ein obj = neues A ();

obj.method1 ();

obj.method2 ();

Gemäß dem obigen Programm wird ein Objekt vom Typ A erstellt. Dann werden method1 und method2 aufgerufen. Die Angabe, welche Methode zur Ausführung aufgerufen werden soll, wird als verbindlich bezeichnet. Die Anweisung obj.method1 () ruft method1 () auf und obj.method2 () ruft method2 () auf. Dieser Link ist verbindlich.

Bei der statischen Bindung wird die Bindung zur Compilierzeit vom Compiler aufgelöst. Es ist auch bekannt als frühe Bindung. Die Bindung erfolgt, bevor ein Programm tatsächlich ausgeführt wird. Statisches Binden tritt bei Methodenüberladung auf. Siehe das unten in Java geschriebene Programm.

öffentliche Voidberechnung

öffentliche Leersumme (int x, int y)

System.out.println ("Summe ist", x + y);

öffentliche Stornosumme (doppeltes x, doppeltes y)

System.out.println ("Summe ist", x + y);

public static void main (String [] args)

Berechnungskal = neue Berechnung ();

Kal. (2,3);

cal.um (5,1, 6,4);

Gemäß dem obigen Programm wird beim Übergeben der zwei Ganzzahlen die Methode mit zwei Ganzzahlen aufgerufen. Beim Übergeben von zwei Doppelwerten wird die Methode aufgerufen, die zwei Doppelwerten entspricht. Dieser Bindungsprozess findet zum Zeitpunkt der Kompilierung statt. Der Compiler weiß, dass er die Methode sum mit zwei ganzzahligen Werten für cal.sum (2,3) aufrufen sollte. Bei cal (5.1,6.4) wird die Summenmethode mit zwei Doppelwerten aufgerufen. Alle erforderlichen Informationen sind vor der Laufzeit bekannt, wodurch die Programmeffizienz und die Ausführungsgeschwindigkeit erhöht werden.

Was ist dynamische Bindung??

Bei der dynamischen Bindung löst der Compiler die Bindung nicht zur Kompilierzeit auf. Die Bindung erfolgt zur Laufzeit. Es ist auch bekannt als spätes Binden. Dynamische Bindung tritt beim Überschreiben von Methoden auf. Siehe in Java geschriebenes Programm.

öffentliche Klasse Shape ()

public void draw ()

System.out.println ("Form zeichnen");

public class Circle () erweitert Shape

public void draw ()

System.out.println ("Kreis zeichnen");

öffentliche Klasse Triangle () erweitert Shape

public void draw ()

System.out.println ("Dreieck zeichnen");

öffentliche Klasse Test

public static void main (String [] args)

Shape s;

s = neue Form ();

s.raw ();

s = neuer Kreis ();

s.raw ();

s = neues Dreieck ();

s.raw ();

Entsprechend dem obigen Programm hat die Klasse Shape eine Methode draw (). Klassenkreis und Klassendreieck erweitert die Shape-Klasse. Klassenkreis und Klassendreieck können die Attribute und Methoden der Klasse Shape erben. Daher ist die Klasse Shape die Oberklasse oder die übergeordnete Klasse. Klassenkreis und Klassendreieck sind Unterklassen oder abgeleitete Klassen. Diese Klassen verfügen auch über die draw () - Methode mit ihren eigenen Implementierungen. Daher wird die draw () -Methode in der Superklasse überschrieben.

In der Hauptmethode werden verschiedene Objekte aufgerufen. Es gibt eine Referenzvariable vom Shape-Typ, also s. Dann ruft s die Methode entsprechend der jeweiligen Klasse auf. Zum Kompilierzeitpunkt verweist der Compiler nur auf die Methode zum Erstellen der Superklasse. Wenn die eigentliche Ausführung beginnt, führt dies zur Ausführung verschiedener Zeichenmethoden. Zuerst zeigt s auf das Objekt vom Typ Shape. Daher wird die Draw-Methode in der Shape-Klasse aufgerufen. Dann zeigt die s auf das Objekt vom Typ Circle und ruft die Draw-Methode der Circle-Klasse auf. Schließlich bezieht sich s auf das Objekt vom Typ Triangle und ruft die Draw-Methode in der Triangle-Klasse auf. Obwohl die Referenzvariable vom Typ Shape ist, hängt die Bindung vom Objekttyp ab. Dieses Konzept wird als dynamisches Binden bezeichnet. Die Informationen werden zur Laufzeit bereitgestellt, sodass die Ausführungsgeschwindigkeit im Vergleich zur statischen Bindung langsamer ist.

Was ist die Ähnlichkeit zwischen statischer und dynamischer Bindung?

  • Beides hängt mit einem Polymorphismus zusammen, der es einem Objekt erlaubt, sich auf verschiedene Weise zu verhalten.

Was ist der Unterschied zwischen statischer und dynamischer Bindung?

Statische Bindung vs. dynamische Bindung

Statische Bindung ist die Art der Bindung, die alle erforderlichen Informationen zum Aufrufen einer Funktion während der Kompilierzeit erfasst. Bei der dynamischen Bindung handelt es sich um die Art der Bindung, die alle erforderlichen Informationen zum Aufrufen einer Funktion während der Laufzeit erfasst.
 Zeit der Bindung
Statische Bindung tritt zur Kompilierzeit auf. Die dynamische Bindung erfolgt zur Laufzeit.
Funktionalität
Bei der statischen Bindung werden Typinformationen zum Binden verwendet. Die dynamische Bindung verwendet Objekte, um die Bindung aufzulösen.
 Tatsächliches Objekt
Bei der statischen Bindung wird kein tatsächliches Objekt zum Binden verwendet. Dynamisches Binden, verwenden Sie das eigentliche Objekt zum Binden.
Synonyme
Statische Bindung wird auch als frühe Bindung bezeichnet. Dynamische Bindung wird auch als späte Bindung bezeichnet.
Ausführung
Die Ausführungsgeschwindigkeit ist beim statischen Binden schnell. Die Ausführungsgeschwindigkeit ist in der dynamischen Bindung gering.
Beispiel
Die statische Bindung wird beim Überladen von Methoden verwendet. Die dynamische Bindung wird beim Überschreiben von Methoden verwendet.

Zusammenfassung - Static Bindung vs. dynamische Bindung 

Es gibt eine Verbindung zwischen einem Methodenaufruf und einer Methodendefinition. Es ist als verbindlich bekannt. Es gibt zwei Arten von Bindungen, die statische und dynamische Bindung genannt werden. Der Unterschied zwischen statischer Bindung und dynamischer Bindung besteht darin, dass bei der statischen Bindung die Bindung zur Kompilierzeit aufgelöst wird, während die dynamische Bindung zur Laufzeit aufgelöst wird, dh zur tatsächlichen Ausführungszeit. Da die erforderlichen Informationen vor der Laufzeit bereitgestellt werden, ist die statische Bindung im Vergleich zur dynamischen Bindung schnell ausgeführt.

Laden Sie das PDF von Static Binding vs Dynamic Binding herunter

Sie können die PDF-Version dieses Artikels herunterladen und gemäß Zitatvermerk für Offline-Zwecke verwenden. Laden Sie die PDF-Version hier herunter: Unterschied zwischen statischer und dynamischer Bindung

Referenz:

1.Java Interview 04 - Statische Bindung gegen dynamische Bindung, Mahika-Tutorials, 27. Dezember 2017. Hier verfügbar