Rozdiel medzi statickým a dynamickým viazaním

Kľúčový rozdiel - statický Viazanie verzus dynamické viazanie
 

Programovacie jazyky ako Java a C # podporujú objektovo orientované programovanie (OOP). Umožňuje vytváranie softvéru pomocou objektov. V softvérovom systéme alebo programe je veľa objektov. Tieto objekty majú atribúty a metódy. Atribúty opisujú vlastnosti. Metódy opisujú činnosti, ktoré môže predmet vykonať. Dáta sa prenášajú cez objekty pomocou metód. Požadované hodnoty sa odosielajú prostredníctvom volaní metód s parametrami. Skutočná implementácia metódy je v definícii metódy. Existuje spojenie medzi vyvolaním metódy a definíciou metódy. Je známa ako väzba. Existujú dva typy väzieb. Sú to statické väzby a dynamické väzby. kľúčový rozdiel medzi statickým a dynamickým viazaním je to, pri statickej väzbe je väzba vyriešená v čase kompilácie, zatiaľ čo dynamická väzba je vyriešená v čase vykonávania, čo je skutočný čas vykonania. Tento článok sa zaoberá rozdielom medzi týmito dvoma väzobnými mechanizmami.

OBSAH

1. Prehľad a kľúčový rozdiel
2. Čo je statická väzba
3. Čo je dynamická väzba
4. Podobnosti medzi statickým viazaním a dynamickým viazaním
5. Porovnanie vedľa seba - statické viazanie verzus dynamické viazanie v tabuľkovej forme
6. Zhrnutie

Čo je statická väzba?

Viazanie je spojenie medzi vyvolaním metódy a definíciami metód.

Obrázok 01: Statické viazanie a dynamické viazanie

Pozrite si nasledujúci program napísaný v jazyku Java.

verejná trieda A

public void method1 ()

System.out.println ( "Method1");

public void method2 ()

System.out.println ( "Method2");

public static void main (String [] args)

A obj = nový A ();

obj.method1 ();

obj.method2 ();

Podľa vyššie uvedeného programu sa vytvorí objekt typu A. Potom sa zavolajú metódy1 a metódy2. Určenie, ktorá metóda by sa mala vyžadovať na vykonanie, sa nazýva záväzné. Príkaz obj.method1 () bude volať method1 () a obj.method2 () bude volať method2 (). Tento odkaz je záväzný.

V statickej väzbe je väzba vyriešená kompilátorom v čase kompilácie. Je tiež známy ako skorá väzba. Viazanie sa uskutoční skôr, ako sa program skutočne spustí. Pri preťažení metódou dochádza k statickej väzbe. Pozrite si nasledujúci program napísaný v jazyku Java.

Výpočet verejnej neplatnosti

verejná neplatná suma (int x, int y)

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

verejná neplatná suma (dvojnásobok x, dvojnásobok y)

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

public static void main (String [] args)

Výpočet cal = nový výpočet ();

cal.sum (2,3);

kal (5,1, 6,4);

Podľa vyššie uvedeného programu sa pri odovzdávaní dvoch celých čísel vyvolá metóda s dvoma celými číslami. Pri odovzdávaní dvoch dvojitých hodnôt sa vyvolá metóda zodpovedajúca dvom dvojitým hodnotám. Tento proces viazania sa vyskytuje v čase kompilácie. Kompilátor vie, že by mal volať metódu súčtu s dvoma celočíselnými hodnotami pre cal.sum (2,3). V prípade cal (5.1,6.4) sa bude volať metóda súčtu s dvoma dvojitými hodnotami. Všetky požadované informácie sú známe pred spustením, takže zvyšuje efektívnosť programu a rýchlosť vykonávania.

Čo je dynamická väzba?

V Dynamic Binding kompilátor nevyrieši väzbu v čase kompilácie. Viazanie nastáva v čase vykonávania. Je tiež známy ako neskoré viazanie. Dynamické viazanie sa vyskytuje pri potlačení metódy. Pozrite si program napísaný v jazyku Java.

Shape () verejnej triedy ()

verejné neplatné losovanie ()

System.out.println („Draw shape“);

verejná trieda Circle () rozširuje tvar

verejné neplatné losovanie ()

System.out.println („Kresliť kruh“);

Verejná trieda Triangle () rozširuje tvar

verejné neplatné losovanie ()

System.out.println („Kresliť trojuholník“);

test verejnej triedy

public static void main (String [] args)

Tvary;

s = nový tvar ();

s.draw ();

s = nový kruh ();

s.draw ();

s = nový trojuholník ();

s.draw ();

Podľa vyššie uvedeného programu má trieda Tvar metódu draw (). Trieda Kruh a trieda Trojuholník rozširujú triedu Tvar. Trieda Kruh a trieda Trojuholník môžu zdediť atribúty a metódy triedy Tvar. Preto je trieda Tvar super trieda alebo nadradená trieda. Kruh triedy a trojuholník triedy sú podtriedy alebo odvodené triedy. Tieto triedy majú tiež metódu draw () s vlastnými implementáciami. Preto je metóda draw () v super triede prepísaná.

V hlavnej metóde sa vyvolávajú rôzne objekty. Existuje referenčná premenná typu Shape, ktorá je s. Potom s vyvolá metódu podľa konkrétnej triedy. V čase kompilácie bude kompilátor odkazovať iba na metódu super triedy draw. Keď začne skutočné vykonanie, povedie to k vykonaniu rôznych metód čerpania. Najprv s bude ukazovať na objekt typu Shape. Preto vyvolá metódu draw v triede Shape. Potom s bude ukazovať na objekt typu Circle a vyvolá metódu draw triedy Circle. Nakoniec bude s odkazovať na objekt typu trojuholník a vyvolá metódu draw v triede Triangle. Aj keď je referenčná premenná typu Shape, väzba sa stane závislou od typu objektu. Tento koncept sa nazýva dynamické viazanie. Informácie sú poskytované v čase vykonávania, takže rýchlosť vykonávania je pomalšia v porovnaní so statickým viazaním.

Aká je podobnosť medzi statickým a dynamickým viazaním?

  • Obidva súvisia s polymorfizmom, ktorý umožňuje objektu správať sa niekoľkými spôsobmi.

Aký je rozdiel medzi statickým a dynamickým viazaním?

Statické viazanie verzus dynamické viazanie

Statická väzba je typ väzby, ktorá zhromažďuje všetky potrebné informácie na volanie funkcie počas kompilácie. Dynamické viazanie je typ väzby, ktorý zhromažďuje všetky potrebné informácie na volanie funkcie počas doby vykonávania.
 Čas väzby
Statické viazanie sa vyskytuje v čase kompilácie. K dynamickému viazaniu dochádza v čase vykonávania.
funkčnosť
Statická väzba používa typ väzby na väzbu. Dynamické viazanie používa objekty na rozlíšenie na viazanie.
 Skutočný objekt
Statická väzba nepoužíva skutočný objekt na väzbu. Dynamické viazanie, na viazanie použite skutočný objekt.
synonymá
Statická väzba je tiež známa ako skorá väzba. Dynamické viazanie je známe aj ako oneskorené viazanie.
poprava
Rýchlosť vykonávania je pri statickej väzbe rýchla. Rýchlosť vykonávania je pri dynamickom viazaní nízka.
príklad
Pri preťažení metódou sa používa statická väzba. Dynamické viazanie sa používa pri potlačovaní metód.

Zhrnutie - statické Viazanie verzus dynamické viazanie 

Existuje spojenie medzi vyvolaním metódy a definíciou metódy. Je známa ako väzba. Existujú dva typy väzieb, ktoré sa nazývajú statické a dynamické. Rozdiel medzi statickou väzbou a dynamickou väzbou je ten, že v statickej väzbe je väzba vyriešená v čase kompilácie, zatiaľ čo dynamická väzba je vyriešená v čase vykonávania, čo je skutočný čas vykonávania. Pretože požadované informácie sú poskytované pred časom spustenia, statické viazanie je rýchle pri vykonávaní v porovnaní s dynamickým viazaním.

Stiahnite si PDF statické viazanie verzus dynamické viazanie

Môžete si stiahnuť verziu tohto článku vo formáte PDF a použiť ju na účely offline podľa citácie. Stiahnite si verziu PDF tu: Rozdiel medzi statickým a dynamickým viazaním

referencie:

1.Java Interview 04 - Dynamické viazanie statických väzieb Vs, návody pre Mahiku, 27. decembra 2017. K dispozícii tu