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.
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
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.
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.
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. |
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.
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
1.Java Wywiad 04 - Wiązanie statyczne kontra dynamiczne wiązanie, tutoriale Mahika, 27 grudnia 2017 r. Dostępne tutaj