Hauptunterschied – statische Bindung vs. dynamische Bindung
Programmiersprachen wie Java und C unterstützen die objektorientierte Programmierung (OOP). Es ermöglicht das Erstellen von Software mithilfe von Objekten. Es gibt viele Objekte in einem Softwaresystem oder einem Programm. Diese Objekte haben Attribute und Methoden. Attribute beschreiben die Eigenschaften. Methoden beschreiben die Aktionen, die von dem Objekt ausgeführt werden können. Daten werden mithilfe von Methoden durch Objekte geleitet. Die erforderlichen Werte werden durch Methodenaufrufe mit Parametern gesendet. Die eigentliche Methodenimplementierung befindet sich in der Methodendefinition. Es gibt eine Verknüpfung zwischen einem Methodenaufruf und einer Methodendefinition. Es wird als Bindung bezeichnet. Es gibt zwei Arten von Bindungen. Sie sind statische Bindung und dynamische Bindung. Der Hauptunterschied 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, d. h. zur tatsächlichen Ausführungszeit. Dieser Artikel beschreibt den Unterschied zwischen diesen beiden Bindungsmechanismen.
Was ist statische Bindung?
Binding ist die Verbindung zwischen einem Methodenaufruf und Methodendefinitionen.
Abbildung 01: Statisches Binden und dynamisches Binden
Beziehen Sie sich auf das folgende 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){
A obj=new A();
obj.method1();
obj.method2();
}
}
Nach obigem Programm wird ein Objekt vom Typ A erstellt. Dann werden method1 und method2 aufgerufen. Das Identifizieren, welche Methode zur Ausführung aufrufen soll, wird als Bindung bezeichnet. Die Anweisung obj.method1() ruft method1() auf und obj.method2() ruft method2() auf. Dieser Link ist bindend.
Bei der statischen Bindung wird die Bindung zur Kompilierzeit vom Compiler aufgelöst. Es wird auch als frühe Bindung bezeichnet. Die Bindung erfolgt, bevor ein Programm tatsächlich ausgeführt wird. Statische Bindung tritt beim Überladen von Methoden auf. Beziehen Sie sich auf das folgende in Java geschriebene Programm.
öffentliche Void-Berechnung{
public void sum(int x, int y){
System.out.println(“Summe ist “, x+y);
}
öffentliche ungültige Summe(doppeltes x, doppeltes y){
System.out.println(“Summe ist “, x+y);
}
public static void main(String args){
Berechnung cal=neue Berechnung();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Gemäß obigem Programm wird beim Übergeben der beiden Ganzzahlen die Methode mit zwei Ganzzahlen aufgerufen. Beim Übergeben von zwei Double-Werten wird die Methode aufgerufen, die zwei Double-Werten entspricht. Dieser Bindungsprozess findet zum Zeitpunkt der Kompilierung statt. Der Compiler weiß, dass er die sum-Methode mit zwei ganzzahligen Werten für cal.sum(2, 3) aufrufen soll. Für cal(5.1, 6.4) wird die Summenmethode mit zwei Double-Werten aufgerufen. Alle erforderlichen Informationen sind vor der Laufzeit bekannt, was die Programmeffizienz und Ausführungsgeschwindigkeit erhöht.
Was ist dynamische Bindung?
Bei dynamischer Bindung löst der Compiler die Bindung nicht zur Kompilierzeit auf. Die Bindung erfolgt zur Laufzeit. Dies wird auch als späte Bindung bezeichnet. Die dynamische Bindung erfolgt beim Überschreiben von Methoden. 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”);
}
}
public class Triangle() erweitert Form{
public void draw(){
System.out.println(“Dreieck zeichnen”);
}
}
öffentlicher Klassentest{
public static void main(String args){
Form s;
s=neue Form();
s.draw();
s=neuer Kreis();
s.draw();
s=neues Dreieck();
s.draw();
}
}
Gemäß obigem Programm hat die Klasse Shape eine Methode draw(). Die Klassen Circle und Triangle erweitern die Shape-Klasse. Die Klassen Circle und Triangle können die Attribute und Methoden der Klasse Shape erben. Daher ist die Klasse Shape die Superklasse oder Elternklasse. Klassenkreis und Klassendreieck sind Unterklassen oder abgeleitete Klassen. Diese Klassen haben auch die Methode draw() mit ihren eigenen Implementierungen. Daher wird die Methode draw() in der Superklasse überschrieben.
In der Hauptmethode werden verschiedene Objekte aufgerufen. Es gibt eine Referenzvariable vom Typ Shape, nämlich s. Dann ruft s die Methode entsprechend der spezifischen Klasse auf. Zur Kompilierzeit verweist der Compiler nur auf die Draw-Methode der Superklasse. Wenn die eigentliche Ausführung beginnt, führt dies zur Ausführung verschiedener Ziehungsmethoden. Zuerst zeigt s auf das Objekt vom Typ Shape. Daher wird die Draw-Methode in der Shape-Klasse aufgerufen. Dann zeigt das s auf das Objekt vom Typ Circle und ruft die Draw-Methode der Circle-Klasse auf. Schließlich verweist 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 dynamische Bindung bezeichnet. Die Informationen werden zur Laufzeit bereitgestellt, daher ist die Ausführungsgeschwindigkeit im Vergleich zur statischen Bindung langsamer.
Was ist die Ähnlichkeit zwischen statischer und dynamischer Bindung?
Beides hängt mit einem Polymorphismus zusammen, der es einem Objekt ermöglicht, sich auf verschiedene Weise zu verh alten
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 sammelt. | Dynamische Bindung ist die Art der Bindung, die alle erforderlichen Informationen zum Aufrufen einer Funktion während der Laufzeit sammelt. |
Zeitpunkt der Bindung | |
Static Binding tritt beim Kompilieren auf. | Die dynamische Bindung erfolgt zur Laufzeit. |
Funktionalität | |
Statische Bindung verwendet Typinformationen für die Bindung. | Dynamische Bindung verwendet Objekte, um die Bindung aufzulösen. |
Aktuelles Objekt | |
Statische Bindung verwendet kein tatsächliches Objekt für die Bindung. | Dynamische Bindung, verwenden Sie das aktuelle Objekt für die Bindung. |
Synonyme | |
Statische Bindung wird auch als frühe Bindung bezeichnet. | Dynamisches Binden wird auch als spätes Binden bezeichnet. |
Ausführung | |
Die Ausführungsgeschwindigkeit ist bei der statischen Bindung schnell. | Die Ausführungsgeschwindigkeit ist bei dynamischer Bindung niedrig. |
Beispiel | |
Statische Bindung wird beim Überladen von Methoden verwendet. | Dynamische Bindung wird beim Überschreiben von Methoden verwendet. |
Zusammenfassung – Statische Bindung vs. dynamische Bindung
Es gibt eine Verbindung zwischen einem Methodenaufruf und einer Methodendefinition. Es wird als Bindung bezeichnet. Es gibt zwei Arten von Bindungen, die als statische Bindung und dynamische Bindung bezeichnet 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, d. h. zur tatsächlichen Ausführungszeit. Da die erforderlichen Informationen vor der Laufzeit bereitgestellt werden, ist die statische Bindung im Vergleich zur dynamischen Bindung schnell in der Ausführung.
Laden Sie das PDF von Static Binding vs. Dynamic Binding herunter
Sie können die PDF-Version dieses Artikels herunterladen und gemäß Zitationshinweis für Offline-Zwecke verwenden. Bitte laden Sie die PDF-Version hier herunter: Unterschied zwischen statischer Bindung und dynamischer Bindung