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.
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