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: Java Interview 04 - Static Binding Vs Dynamic Binding 2024, Grudzień
Anonim

Kluczowa różnica - wiązanie statyczne a wiązanie dynamiczne

Języki programowania, takie jak Java i C, obsługują programowanie zorientowane obiektowo (OOP). Umożliwia budowanie oprogramowania za pomocą 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 za pomocą metod. Wymagane wartości są wysyłane poprzez wywołania metod z parametrami. Rzeczywista implementacja metody znajduje się w definicji metody. Istnieje połączenie między wywołaniem metody a definicją metody. Nazywa się to wiązaniem. Istnieją dwa rodzaje wiązań. Są to wiązania statyczne i wiązania dynamiczne. Kluczowa różnica między powiązaniem statycznym a powiązaniem dynamicznym polega na tym, że w przypadku powiązania statycznego powiązanie jest rozwiązywane w czasie kompilacji, podczas gdy powią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.

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 dynamiczne

Odnieś się do poniższego programu napisanego w Javie.

public class A{

public void method1(){

System.out.println(„Metoda1”);

}

public void method2(){

System.out.println(„Metoda2”);

}

public static void main(String args){

A obj=nowy A();

obj.metoda1();

obj.metoda2();

}

}

Zgodnie z powyższym programem tworzony jest obiekt typu A. Następnie wywoływane są metody1 i metoda2. Określanie, która metoda powinna wywołać wykonanie, nazywa się powiązaniem. Instrukcja obj.method1() wywoła metodę1(), a obj.method2() wywoła metodę2(). Ten link jest wiążący.

W wiązaniu statycznym powiązanie jest rozwiązywane w czasie kompilacji przez kompilator. 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(„Suma to”, x+y);

}

public void sum(double x, double y){

System.out.println(„Suma to”, x+y);

}

public static void main(String args){

Kal kalkulacji=nowa kalkulacja();

suma kal.(2, 3);

cal.sum(5.1, 6.4);

}

}

Zgodnie z powyższym programem, podczas przekazywania dwóch liczb całkowitych zostanie wywołana metoda z dwoma liczbami całkowitymi. Podczas przekazywania dwóch wartości podwójnych zostanie wywołana metoda odpowiadająca dwóm wartościom podwójnym. Ten proces wiązania następuje w momencie kompilacji. Kompilator wie, że powinien wywołać metodę sum z dwiema wartościami całkowitymi dla cal.sum(2, 3). W przypadku cal(5.1, 6.4) wywoła metodę sum z dwoma podwójnymi wartościami. Wszystkie wymagane informacje są znane przed uruchomieniem, dzięki czemu zwiększa się wydajność programu i szybkość wykonywania.

Co to jest wiązanie dynamiczne?

W wiązaniu dynamicznym kompilator nie rozwiązuje wią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 zastępowaniu metody. Zapoznaj się z programem napisanym w Javie.

public class Shape(){

public void draw(){

System.out.println("Narysuj kształt");

}

}

public class Circle() rozszerza Shape{

public void draw(){

System.out.println("Narysuj okrąg");

}

}

public class Triangle() rozszerza Shape{

public void draw(){

System.out.println("Narysuj trójkąt");

}

}

test klasy publicznej{

public static void main(String args){

Kształt;

s=nowy kształt();

s.draw();

s=nowy krąg();

s.draw();

s=nowy trójkąt();

s.draw();

}

}

Według powyższego programu, klasa Shape posiada metodę draw(). Class Circle i Class Triangle rozszerzają klasę Shape. Class Circle i Class Triangle mogą dziedziczyć atrybuty i metody klasy Shape. Dlatego klasa Shape jest klasą nadrzędną lub klasą nadrzędną. Class Circle i Class Triangle są klasami podrzędnymi lub klasami pochodnymi. Te klasy mają również metodę draw() z własnymi implementacjami. Dlatego też metoda draw() w super klasie jest przesłonięta.

W głównej metodzie wywoływane są różne obiekty. Istnieje zmienna referencyjna typu Shape, którą jest s. Następnie s wywołuje metodę zgodnie z konkretną klasą. W czasie kompilacji kompilator będzie odwoływał się tylko do metody rysowania superklasy. Kiedy rozpocznie się faktyczne wykonanie, doprowadzi to do wykonania różnych metod losowania. Najpierw s będzie wskazywał na obiekt typu Shape. W związku z tym wywoła metodę rysowania w klasie Shape. Wtedy s będzie wskazywać obiekt typu Circle i wywoła metodę rysowania 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 powiązanie dynamiczne. Informacje są dostarczane w czasie wykonywania, więc szybkość wykonywania jest mniejsza w porównaniu z wiązaniem statycznym.

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?

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 wiązanie to typ wiązania, który zbiera wszystkie informacje wymagane do wywołania funkcji w czasie wykonywania.
Czas wiązania
Powiązanie statyczne występuje w czasie kompilacji. Dynamiczne wiązanie następuje w czasie wykonywania.
Funkcjonalność
Wiązanie statyczne wykorzystuje informacje o typie do wiązania. Dynamiczne wiązanie wykorzystuje obiekty do rozwiązania do wiązania.
Rzeczywisty obiekt
Wiązanie statyczne nie używa rzeczywistego obiektu do wiązania. Dynamiczne wiązanie, użyj rzeczywistego obiektu do wiązania.
Synonimy
Wiązanie statyczne jest również znane jako wczesne wiązanie. Wiązanie dynamiczne jest również znane jako późne wiązanie.
Wykonanie
Prędkość wykonywania jest duża w wiązaniu statycznym. Szybkość wykonywania jest niska w dynamicznym wiązaniu.
Przykład
Przy przeciążaniu metod używane jest wiązanie statyczne. Dynamiczne wiązanie jest używane w zastępowaniu metody.

Podsumowanie - wiązanie statyczne a wiązanie dynamiczne

Istnieje połączenie między wywołaniem metody a definicją metody. Nazywa się to wiązaniem. Istnieją dwa typy powiązań: powiązanie statyczne i powiązanie dynamiczne. Różnica między powiązaniem statycznym a powiązaniem dynamicznym polega na tym, że w powiązaniu statycznym powiązanie jest rozwiązywane w czasie kompilacji, podczas gdy powią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 wykonywane szybko w porównaniu z wiązaniem dynamicznym.

Pobierz plik PDF z wiązaniem statycznym a wiązaniem dynamicznym

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

Zalecana: