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

Kluczowa różnica - statyczna Wiązanie vs Wiązanie dynamiczne
 

Języki programowania, takie jak Java i C #, obsługują programowanie obiektowe (OOP). Pozwala budować oprogramowanie przy użyciu obiektów. W systemie oprogramowania lub programie jest wiele obiektów. Te obiekty mają atrybuty i metody. Atrybuty opisują cechy. Metody opisują działania, które może wykonać obiekt. Dane są przekazywane przez obiekty przy użyciu metod. Wymagane wartości są wysyłane za pomocą wywołań metod z parametrami. Rzeczywista implementacja metody znajduje się w definicji metody. Istnieje połączenie między wywołaniem metody a definicją metody. Jest znany jako wiążący. Istnieją dwa rodzaje powiązań. Są to wiązania statyczne i dynamiczne. The kluczowa różnica jest to między wiązaniem statycznym a dynamicznym, w wiązaniu statycznym wiązanie jest rozwiązywane w czasie kompilacji, natomiast wiązanie dynamiczne jest rozwiązywane w czasie wykonywania, który jest rzeczywistym czasem wykonania. W tym artykule omówiono różnicę między tymi dwoma mechanizmami wiązania.

ZAWARTOŚĆ

1. Przegląd i kluczowa różnica
2. Co to jest wiązanie statyczne
3. Co to jest dynamiczne wiązanie
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?

Wiązanie to połączenie między wywołaniem metody a definicjami metod.

Rysunek 01: Wiązanie statyczne i dynamiczne

Zapoznaj się z poniższym programem napisanym w Javie.

klasa publiczna A

public void method1 ()

System.out.println („Method1”);

public void method2 ()

System.out.println („Method2”);

public static void main (String [] args)

A obj = nowy A ();

obj.method1 ();

obj.method2 ();

Zgodnie z powyższym programem tworzony jest obiekt typu A. Następnie wywoływana jest metoda1 i metoda2. Określenie, która metoda powinna wywoływać wykonanie, nazywane jest wiązaniem. Instrukcja obj.method1 () wywoła metodę1 (), a obj.method2 () wywoła metodę2 (). Ten link jest wiążący.

W przypadku wiązania statycznego kompilacja jest rozstrzygana w czasie kompilacji. Jest również znany jako wczesne wiązanie. Wiązanie ma miejsce przed uruchomieniem programu. Wiązanie statyczne występuje w przypadku przeciążenia metody. Zapoznaj się z poniższym programem napisanym w Javie.

public void Obliczanie

public void sum (int x, int y)

System.out.println („Sum is”, x + y);

publiczna nieważna suma (podwójne x, podwójne y)

System.out.println („Sum is”, x + y);

public static void main (String [] args)

Obliczanie cal = nowe obliczanie ();

cal. suma (2,3);

cal. suma (5.1, 6.4);

Zgodnie z powyższym programem, po przejściu dwóch liczb całkowitych, zostanie wywołana metoda z dwiema liczbami całkowitymi. Po przekazaniu dwóch podwójnych wartości zostanie wywołana metoda odpowiadająca dwóm podwójnym wartościom. Ten proces wiązania występuje w momencie kompilacji. Kompilator wie, że powinien wywołać metodę sumy z dwiema liczbami całkowitymi dla cal.sum (2,3). Dla cal (5.1.6.4) wywoła metodę sumowania z dwiema podwójnymi wartościami. Wszystkie wymagane informacje są znane przed uruchomieniem, więc zwiększa wydajność programu i szybkość wykonywania.

Co to jest dynamiczne wiązanie?

W dynamicznym wiązaniu kompilator nie rozwiązuje powiązania w czasie kompilacji. Wiązanie następuje w czasie wykonywania. Jest również znany jako późne wiązanie. Wiązanie dynamiczne występuje w przypadku przesłonięcia metody. Zobacz program napisany w Javie.

Shape klasy publicznej ()

public void draw ()

System.out.println („Rysuj kształt”);

Circle () klasy publicznej rozszerza Shape

public void draw ()

System.out.println („Narysuj okrąg”);

Trójkąt klasy publicznej () rozszerza Kształt

public void draw ()

System.out.println („Rysuj trójkąt”);

test klasy publicznej

public static void main (String [] args)

Kształt s;

s = nowy Kształt ();

s.draw ();

s = nowy Circle ();

s.draw ();

s = nowy trójkąt ();

s.draw ();

Zgodnie z powyższym programem klasa Shape ma metodę draw (). Klasa Circle i Class Triangle rozszerzają klasę Shape. Koło klasy i trójkąt klasy mogą dziedziczyć atrybuty i metody klasy Shape. Dlatego klasa Shape jest klasą nadrzędną lub nadrzędną. Koło klasowe i trójkąt klasowy to podklasy lub klasy pochodne. Klasy te 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, którą jest s. Następnie s wywołuje metodę zgodnie z określoną klasą. W czasie kompilacji kompilator będzie odwoływał się tylko do metody losowania superklasy. Kiedy rozpocznie się faktyczne wykonanie, doprowadzi to do wykonania różnych metod losowania. Najpierw s będzie wskazywał na obiekt typu Shape. Dlatego wywoła metodę rysowania w klasie Shape. Wtedy s będzie wskazywał obiekt typu Circle i wywoła metodę rysowania klasy Circle. Wreszcie s będzie odnosić się do obiektu typu Triangle i wywoła metodę rysowania w klasie Triangle. Mimo że zmienna referencyjna jest typu Shape, wiązanie zdarza się w zależności od typu obiektu. Ta koncepcja jest znana jako dynamiczne wiązanie. Informacje są dostarczane w czasie wykonywania, więc szybkość wykonania jest mniejsza w porównaniu do wiązania statycznego.

Jakie jest podobieństwo między wiązaniem statycznym a 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 dynamicznym?

Wiązanie statyczne a wiązanie dynamiczne

Powiązanie statyczne to rodzaj powiązania, w którym gromadzone są wszystkie informacje wymagane do wywołania funkcji w czasie kompilacji. Powiązanie dynamiczne to rodzaj powiązania, w którym gromadzone są wszystkie informacje wymagane do wywołania funkcji w czasie wykonywania.
 Czas wiązania
Wiązanie statyczne występuje w czasie kompilacji. Wiązanie dynamiczne występuje w czasie wykonywania.
Funkcjonalność
Wiązanie statyczne wykorzystuje informacje o typie do wiązania. Wiązanie dynamiczne wykorzystuje obiekty do rozstrzygania w celu powiązania.
 Rzeczywisty obiekt
Wiązanie statyczne nie używa rzeczywistego obiektu do wiązania. Powiązanie dynamiczne, użyj rzeczywistego obiektu do powiązania.
Synonimy
Wiązanie statyczne jest również znane jako wiązanie wczesne. Wiązanie dynamiczne jest również znane jako wiązanie późne.
Wykonanie
Szybkość wykonania jest szybka w wiązaniu statycznym. Szybkość wykonywania jest niska w dynamicznym wiązaniu.
Przykład
W przypadku przeciążenia metody stosuje się wiązanie statyczne. Dynamiczne wiązanie jest używane w zastępowaniu metody.

Podsumowanie - statyczne Wiązanie vs Wiązanie dynamiczne 

Istnieje połączenie między wywołaniem metody a definicją metody. Jest znany jako wiążący. Istnieją dwa rodzaje powiązań zwane wiązaniem statycznym i wiązaniem dynamicznym. Różnica między wiązaniem statycznym a dynamicznym polega na tym, że w wiązaniu statycznym wiązanie jest rozwiązywane w czasie kompilacji, natomiast wiązanie dynamiczne jest rozwiązywane w czasie wykonywania, który jest rzeczywistym czasem wykonania. Ponieważ wymagane informacje są dostarczane przed czasem wykonywania, wiązanie statyczne jest szybkie w wykonywaniu w porównaniu do wiązania dynamicznego.

Pobierz plik PDF wiązania statycznego vs wiązanie dynamiczne

Możesz pobrać wersję PDF tego artykułu i używać go do celów offline zgodnie z cytatem. Pobierz wersję PDF tutaj: Różnica między wiązaniem statycznym a dynamicznym

Odniesienie:

1.Java Wywiad 04 - Wiązanie statyczne kontra dynamiczne wiązanie, tutoriale Mahika, 27 grudnia 2017 r. Dostępne tutaj