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