Kluczowa różnica - wiązanie statyczne a wiązanie dynamiczne
Języki programowania, takie jak Java i C #, obsługują programowanie obiektowe (OOP). Umożliwia budowanie oprogramowania przy użyciu obiektów. W systemie oprogramowania lub programie znajduje się wiele obiektów. Te obiekty mają atrybuty i metody. Atrybuty opisują cechy. Metody opisują akcje, które może wykonać obiekt. Dane są przekazywane przez obiekty przy użyciu metod. Wymagane wartości są wysyłane za pośrednictwem wywołań metod z parametrami. Rzeczywista implementacja metody znajduje się w definicji metody. Istnieje łącze między wywołaniem metody a definicją metody. Nazywa się to wiązaniem. Istnieją dwa rodzaje powiązań. Są to wiązanie statyczne i wiązanie dynamiczne. Kluczowa różnica między wiązaniem statycznym a wiązaniem dynamicznym polega na tym, że w powiązaniu statycznym powiązanie jest rozpoznawane w czasie kompilacji, podczas gdy wiązanie dynamiczne jest rozwiązywane w czasie wykonywania.czyli rzeczywisty czas wykonania. W tym artykule omówiono różnicę między tymi dwoma mechanizmami wiązania.
ZAWARTOŚĆ
1. Przegląd i kluczowe różnice
2. Co to jest wiązanie statyczne
3. Co to jest wiązanie dynamiczne
4. Podobieństwa między wiązaniem statycznym a dynamicznym
5. Porównanie obok siebie - wiązanie statyczne vs wiązanie dynamiczne w formie tabelarycznej
6. Podsumowanie
Co to jest wiązanie statyczne?
Powiązanie jest łączem między wywołaniem metody a definicjami metod.
Rysunek 01: Wiązanie statyczne i wiązanie dynamiczne
Zapoznaj się z poniższym programem napisanym w Javie.
klasa publiczna A {
public void method1 () {
System.out.println („Metoda1”);
}
public void method2 () {
System.out.println („Metoda2”);
}
public static void main (String args) {
A obj = new A ();
obj.method1 ();
obj.method2 ();
}
}
Zgodnie z powyższym programem tworzony jest obiekt typu A. Następnie wywoływane są metody Method1 i Method2. Określenie, która metoda powinna wywołać wykonanie, jest nazywane wiązaniem. Instrukcja obj.method1 () wywoła metodę method1 (), a obj.method2 () wywoła metodę method2 (). Ten link jest wiążący.
W powiązaniu statycznym powiązanie jest rozpoznawane w czasie kompilacji przez kompilator. Jest również znany jako wczesne wiązanie. Wiązanie ma miejsce przed faktycznym uruchomieniem programu. Statyczne powiązanie występuje w przypadku przeciążania metod. Zapoznaj się z poniższym programem napisanym w Javie.
public void Calculation {
public void sum (int x, int y) {
System.out.println („Suma to”, x + y);
}
public void sum (double x, double y) {
System.out.println („Suma to”, x + y);
}
public static void main (String args) {
Calculation cal = new Calculation ();
suma kal. (2,3);
suma kal. (5,1; 6,4);
}
}
Zgodnie z powyższym programem, przy przekazywaniu dwóch liczb całkowitych zostanie wywołana metoda z dwoma liczbami całkowitymi. Podczas przekazywania dwóch podwójnych wartości zostanie wywołana metoda odpowiadająca dwóm podwójnym wartościom. Ten proces wiązania ma miejsce w momencie kompilacji. Kompilator wie, że powinien wywołać metodę sum z dwiema liczbami całkowitymi dla cal.sum (2,3). W przypadku cal (5.1,6.4) wywoła metodę sumy z dwoma podwójnymi wartościami. Wszystkie wymagane informacje są znane przed uruchomieniem, co zwiększa wydajność programu i szybkość wykonywania.
Co to jest wiązanie dynamiczne?
W Dynamic Binding kompilator nie rozwiązuje powiązania w czasie kompilacji. Wiązanie występuje w czasie wykonywania. Jest również znany jako późne wiązanie. Dynamiczne wiązanie występuje w zastępowaniu metody. Zobacz program napisany w Javie.
public class Shape () {
public void draw () {
System.out.println („Rysuj kształt”);
}
}
public class Circle () rozszerza Shape {
public void draw () {
System.out.println („Rysuj okrąg”);
}
}
public class Triangle () rozszerza Shape {
public void draw () {
System.out.println („Rysuj trójkąt”);
}
}
public class Test {
public static void main (String args) {
Kształt s;
s = nowy kształt ();
s.draw ();
s = nowy okrąg ();
s.draw ();
s = nowy Triangle ();
s.draw ();
}
}
Zgodnie z powyższym programem klasa Shape ma metodę draw (). Klasa Circle i Triangle rozszerzają klasę Shape. Class Circle i Class Triangle mogą dziedziczyć atrybuty i metody klasy Shape. Dlatego klasa Shape jest superklasą lub klasą nadrzędną. Class Circle i Class Triangle to podklasy lub klasy pochodne. Te klasy mają również metodę draw () z własnymi implementacjami. Dlatego metoda draw () w superklasie jest nadpisywana.
W metodzie głównej wywoływane są różne obiekty. Istnieje zmienna referencyjna typu Shape, czyli s. Następnie s wywołuje metodę zgodnie z określoną klasą. W czasie kompilacji kompilator odwołuje się tylko do metody draw superklasy. Kiedy rozpocznie się faktyczna realizacja, doprowadzi to do wykonania różnych metod rysowania. Najpierw s będzie wskazywać obiekt typu Shape. W związku z tym wywoła metodę draw w klasie Shape. Wtedy s będzie wskazywać obiekt typu Circle i wywoła metodę draw klasy Circle. Na koniec s będzie odnosić się do obiektu typu Triangle i wywoła metodę draw w klasie Triangle. Mimo że zmienna referencyjna jest typu Shape, powiązanie zależy od typu obiektu. Ta koncepcja jest znana jako Dynamic Binding. Informacje są dostarczane w czasie wykonywania,więc szybkość wykonywania jest wolniejsza w porównaniu do wiązania statycznego.
Jakie jest podobieństwo między wiązaniem statycznym a wiązaniem dynamicznym?
Oba są związane z polimorfizmem, który pozwala obiektowi zachowywać się na wiele sposobów
Jaka jest różnica między wiązaniem statycznym a wiązaniem dynamicznym?
Porównaj środek artykułu przed tabelą
Wiązanie statyczne a wiązanie dynamiczne |
|
Powiązanie statyczne to typ powiązania, który zbiera wszystkie informacje wymagane do wywołania funkcji w czasie kompilacji. | Dynamiczne powiązanie to typ powiązania, który zbiera wszystkie informacje wymagane do wywołania funkcji w czasie wykonywania. |
Czas wiązania | |
Statyczne wiązanie występuje w czasie kompilacji. | Dynamiczne wiązanie występuje w czasie wykonywania. |
Funkcjonalność | |
Wiązanie statyczne używa informacji o typie do powiązania. | Dynamiczne wiązanie używa obiektów do rozpoznawania powiązania. |
Rzeczywisty obiekt | |
Wiązanie statyczne nie używa rzeczywistego obiektu do wiązania. | Dynamiczne wiązanie, użyj rzeczywistego obiektu do powiązania. |
Synonimy | |
Wiązanie statyczne jest również znane jako wczesne wiązanie. | Dynamiczne wiązanie jest również znane jako późne wiązanie. |
Wykonanie | |
Szybkość wykonywania jest duża w przypadku wiązania statycznego. | Szybkość wykonywania jest niska w dynamicznym wiązaniu. |
Przykład | |
Statyczne powiązanie jest używane w przeciążaniu metod. | Dynamiczne wiązanie jest używane w zastępowaniu metod. |
Podsumowanie - wiązanie statyczne a wiązanie dynamiczne
Istnieje łącze między wywołaniem metody a definicją metody. Nazywa się to wiązaniem. Istnieją dwa typy powiązań zwane wiązaniem statycznym i wiązaniem dynamicznym. Różnica między wiązaniem statycznym a wiązaniem dynamicznym polega na tym, że w powiązaniu statycznym powiązanie jest rozpoznawane w czasie kompilacji, podczas gdy powiązanie dynamiczne jest rozwiązywane w czasie wykonywania, który jest faktycznym czasem wykonania. Ponieważ wymagane informacje są dostarczane przed uruchomieniem, powiązanie statyczne jest wykonywane szybko w porównaniu z wiązaniem dynamicznym.
Pobierz plik PDF przedstawiający powiązanie statyczne i dynamiczne
Możesz pobrać wersję PDF tego artykułu i używać jej w trybie offline, zgodnie z notą cytatową. Pobierz wersję PDF tutaj: Różnica między wiązaniem statycznym a wiązaniem dynamicznym