Hauptunterschied - Statische 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 haben Attribute und Methoden. Attribute beschreiben die Eigenschaften. Methoden beschreiben die Aktionen, die vom Objekt ausgeführt werden können. Daten werden mithilfe von Methoden durch Objekte übertragen. Die erforderlichen Werte werden über Methodenaufrufe mit Parametern gesendet. Die eigentliche Methodenimplementierung befindet sich in der Methodendefinition. Es besteht eine Verbindung zwischen einem Methodenaufruf und einer Methodendefinition. Es ist als Bindung bekannt. 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 Kompilierungszeit aufgelöst wird, während die dynamische Bindung zur Laufzeit aufgelöst wird. Dies ist der tatsächliche Zeitpunkt der Ausführung. Dieser Artikel beschreibt den Unterschied zwischen diesen beiden Bindungsmechanismen.
INHALT
1. Überblick und Hauptunterschied
2. Was ist statische Bindung
? 3. Was ist dynamische Bindung?
4. Ähnlichkeiten zwischen statischer Bindung und dynamischer Bindung.
5. Vergleich nebeneinander - Statische Bindung und dynamische Bindung in Tabellenform.
6. Zusammenfassung
Was ist statische Bindung?
Die Bindung ist die Verbindung zwischen einem Methodenaufruf und Methodendefinitionen.
Abbildung 01: Statische Bindung und dynamische Bindung
Lesen Sie 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 = neues A ();
obj.method1 ();
obj.method2 ();
}}
}}
Gemäß dem obigen Programm wird ein Objekt vom Typ A erstellt. Dann werden Methode1 und Methode2 aufgerufen. Das Identifizieren, welche Methode zur Ausführung aufgerufen werden soll, wird als Bindung bezeichnet. Die Anweisung obj.method1 () ruft method1 () und obj.method2 () method2 () auf. Dieser Link ist verbindlich.
Bei der statischen Bindung wird die Bindung zur Kompilierungszeit vom Compiler aufgelöst. Es ist auch als frühe Bindung bekannt. Die Bindung erfolgt, bevor ein Programm tatsächlich ausgeführt wird. Statische Bindung tritt beim Überladen von Methoden auf. Lesen Sie das folgende in Java geschriebene Programm.
public void Berechnung {
öffentliche Leersumme (int x, int y) {
System.out.println ("Summe ist", x + y);
}}
öffentliche Leersumme (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äß dem obigen Programm wird beim Übergeben der zwei ganzen Zahlen die Methode mit zwei ganzen Zahlen aufgerufen. Wenn zwei Doppelwerte übergeben werden, wird die Methode aufgerufen, die zwei Doppelwerten entspricht. Dieser Bindungsprozess erfolgt zum Zeitpunkt der Kompilierung. Der Compiler weiß, dass er die Summenmethode mit zwei ganzzahligen Werten für cal.sum (2,3) aufrufen sollte. Für cal (5.1.6.4) wird die Summenmethode mit zwei Doppelwerten aufgerufen. Alle erforderlichen Informationen sind vor der Laufzeit bekannt, wodurch die Programmeffizienz und Ausführungsgeschwindigkeit erhöht werden.
Was ist dynamische Bindung?
Bei der dynamischen Bindung löst der Compiler die Bindung zur Kompilierungszeit nicht auf. Die Bindung erfolgt zur Laufzeit. Es ist auch als späte Bindung bekannt. Die dynamische Bindung erfolgt beim Überschreiben von Methoden. Siehe Programm in Java geschrieben.
ö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 Shape {
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äß dem obigen Programm hat die Klasse Shape eine Methode draw (). Klassenkreis und Klassendreieck erweitern die Formklasse. Klassenkreis und Klassendreieck können die Attribute und Methoden der Klassenform erben. Daher ist die Klassenform die Superklasse oder übergeordnete Klasse. Klassenkreis und Klassendreieck sind Unterklassen oder abgeleitete Klassen. Diese Klassen haben auch 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 Formtyp, nämlich s. Dann ruft s die Methode gemäß der spezifischen Klasse auf. Zur Kompilierungszeit verweist der Compiler nur auf die Zeichnungsmethode der Superklasse. Wenn die eigentliche Ausführung beginnt, werden verschiedene Zeichenmethoden ausgeführt. Zunächst zeigt s auf das Objekt vom Typ Form. Daher wird die Zeichenmethode in der Shape-Klasse aufgerufen. Dann zeigt das s auf das Objekt vom Typ Circle und ruft die Zeichenmethode der Circle-Klasse auf. Schließlich bezieht sich s auf das Objekt vom Typ Triangle und ruft die Zeichenmethode in der Triangle-Klasse auf. Obwohl die Referenzvariable vom Typ Form ist, hängt die Bindung zufällig 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 Bindung und dynamischer Bindung?
Beide beziehen sich auf einen Polymorphismus, der es einem Objekt ermöglicht, sich auf verschiedene Arten zu verhalten
Was ist der Unterschied zwischen statischer und dynamischer Bindung?
Diff Artikel Mitte vor Tabelle
Statische Bindung vs dynamische Bindung |
|
Statische Bindung ist die Art der Bindung, die alle erforderlichen Informationen sammelt, um eine Funktion während der Kompilierungszeit aufzurufen. | Dynamische Bindung ist die Art der Bindung, die alle erforderlichen Informationen sammelt, um eine Funktion zur Laufzeit aufzurufen. |
Zeitpunkt der Bindung | |
Die statische Bindung erfolgt zur Kompilierungszeit. | Die dynamische Bindung erfolgt zur Laufzeit. |
Funktionalität | |
Bei der statischen Bindung werden Typinformationen zum Binden verwendet. | Bei der dynamischen Bindung werden Objekte zum Auflösen zum Binden aufgelöst. |
Tatsächliches Objekt | |
Bei der statischen Bindung wird kein tatsächliches Objekt zum Binden verwendet. | Dynamische Bindung, 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 bei der statischen Bindung ist hoch. | Die Ausführungsgeschwindigkeit ist bei der dynamischen Bindung gering. |
Beispiel | |
Die statische Bindung wird beim Überladen von Methoden verwendet. | Die dynamische Bindung wird beim Überschreiben von Methoden verwendet. |
Zusammenfassung - Statische Bindung vs. dynamische Bindung
Es besteht eine Verbindung zwischen einem Methodenaufruf und einer Methodendefinition. Es ist als Bindung bekannt. 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 Kompilierungszeit aufgelöst wird, während die dynamische Bindung zur Laufzeit aufgelöst wird, die der tatsächliche Ausführungszeitpunkt ist. 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äß Zitierhinweis für Offline-Zwecke verwenden. Bitte laden Sie die PDF-Version hier herunter: Unterschied zwischen statischer und dynamischer Bindung