Różnica Między Wiązaniem Statycznym A Wiązaniem Dynamicznym

Spisu treści:

Różnica Między Wiązaniem Statycznym A Wiązaniem Dynamicznym
Różnica Między Wiązaniem Statycznym A Wiązaniem Dynamicznym

Wideo: Różnica Między Wiązaniem Statycznym A Wiązaniem Dynamicznym

Wideo: Różnica Między Wiązaniem Statycznym A Wiązaniem Dynamicznym
Wideo: Programowanie C+17 - 21 - szablony (Polimorfizm statyczny) 2024, Listopad
Anonim

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.

Różnica między wiązaniem statycznym a wiązaniem dynamicznym
Różnica między wiązaniem statycznym a wiązaniem dynamicznym

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

Zalecane: