Kľúčový rozdiel - statická väzba vs dynamická väzba
Programovacie jazyky ako Java a C # podporujú objektovo orientované programovanie (OOP). Umožňuje stavať softvér pomocou objektov. V softvérovom systéme alebo programe je veľa objektov. Tieto objekty majú atribúty a metódy. Atribúty popisujú vlastnosti. Metódy popisujú akcie, ktoré môže objekt vykonať. Dáta sa prenášajú pomocou metód. Požadované hodnoty sa odosielajú prostredníctvom volania metód s parametrami. Samotná implementácia metódy je v definícii metódy. Existuje prepojenie medzi volaním metódy a definíciou metódy. Je známa ako väzba. Existujú dva typy väzieb. Sú to statická väzba a dynamická väzba. Kľúčový rozdiel medzi statickou väzbou a dynamickou väzbou je ten, že pri statickej väzbe je väzba vyriešená v čase kompilácie, zatiaľ čo dynamická väzba je vyriešená za behu,čo je skutočný čas vykonania. Tento článok pojednáva o rozdieloch medzi týmito dvoma mechanizmami viazania.
OBSAH
1. Prehľad a hlavný rozdiel
2. Čo je statická väzba
3. Čo je dynamická väzba
4. Podobnosti medzi statickou väzbou a dynamickou väzbou
5. Porovnanie vedľa seba - statická väzba vs. dynamická väzba v tabuľkovej forme
6. Zhrnutie
Čo je statická väzba?
Väzba je spojenie medzi volaním metódy a definíciami metódy.
Obrázok 01: Statické viazanie a dynamické viazanie
Prečítajte si program uvedený nižšie v jazyku Java.
verejná trieda A {
public void method1 () {
System.out.println („Metóda1“);
}
public void method2 () {
System.out.println („Metóda2“);
}
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óda2. Identifikácia, ktorá metóda by mala vyžadovať vykonanie, sa nazýva väzba. 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á v čase kompilácie kompilátorom. Je tiež známa ako skorá väzba. K väzbe dôjde skôr, ako program skutočne beží. Pri preťažení metódy nastáva statická väzba. Prečítajte si program uvedený nižšie v jazyku Java.
výpočet verejnej neplatnosti {
verejná neplatná suma (int x, int y) {
System.out.println („Súčet je“, x + y);
}
verejná neplatná suma (dvojnásobok x, dvojnásobok y) {
System.out.println („Súčet je“, x + y);
}
public static void main (String args) {
Výpočet cal = nový Výpočet ();
kal. súčet (2,3);
kal. súčet (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 dvojnásobných hodnôt sa vyvolá metóda zodpovedajúca dvom dvojnásobným hodnotám. Tento proces viazania nastáva v čase kompilácie. Kompilátor vie, že by mal zavolať metódu súčtu s dvoma celočíselnými hodnotami pre cal.sum (2,3). Pre cal (5.1,6.4) bude volať metódu súčtu s dvoma dvojnásobnými hodnotami. Všetky požadované informácie sú známe pred spustením, takže zvyšujú efektívnosť programu a rýchlosť jeho vykonávania.
Čo je dynamická väzba?
V dynamickej väzbe kompilátor nevyrieši väzbu v čase kompilácie. K väzbe dochádza za behu programu. Je tiež známa ako neskorá väzba. K dynamickému viazaniu dochádza pri prepísaní metódy. Pozrite si program napísaný v jazyku Java.
public class Shape () {
public void draw () {
System.out.println („Nakresliť tvar“);
}
}
public class Circle () rozširuje tvar {
public void draw () {
System.out.println („Nakresliť kruh“);
}
}
verejná trieda Trojuholník () rozširuje tvar {
public void draw () {
System.out.println („Nakreslite 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 Shape metódu draw (). Triedny kruh a trojuholník rozširujú triedu Tvar. Triedny kruh a trojuholník triedy môžu zdediť atribúty a metódy triedy Shape. Preto je trieda Shape super triedou alebo rodičovskou triedou. Triedny kruh a trojuholník triedy sú podtriedami alebo odvodenými triedami. 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 vykreslenia super triedy. Keď sa začne skutočné vykonávanie, povedie to k vykonaniu rôznych metód losovania. Najprv s bude smerovať na objekt typu Shape. Preto vyvolá metódu draw v triede Shape. Potom s bude smerovať na objekt typu Circle a vyvolá metódu kreslenia triedy Circle. Nakoniec s bude odkazovať na objekt typu Triangle a vyvolá metódu draw v triede Triangle. Aj keď je referenčná premenná typu Shape, väzba závisí od typu objektu. Tento koncept je známy ako Dynamic Binding. Informácie sú poskytované za behu,takže rýchlosť vykonania je v porovnaní so statickou väzbou pomalšia.
Aká je podobnosť medzi statickou väzbou a dynamickou väzbou?
Oboje súvisí s polymorfizmom, ktorý umožňuje objektu správať sa viacerými spôsobmi
Aký je rozdiel medzi statickým viazaním a dynamickým viazaním?
Rozdielny článok v strede pred tabuľkou
Statické viazanie vs dynamické viazanie |
|
Statická väzba je typ väzby, ktorá zhromažďuje všetky požadované informácie na volanie funkcie počas kompilácie. | Dynamická väzba je typ väzby, ktorá zhromažďuje všetky požadované informácie na volanie funkcie počas behu. |
Čas viazania | |
Statické viazanie sa vyskytuje v čase kompilácie. | Dynamické viazanie sa vyskytuje za behu programu. |
Funkčnosť | |
Statická väzba používa na väzbu informácie o type. | Dynamická väzba využíva objekty na väzbu. |
Skutočný objekt | |
Statická väzba nepoužíva na väzbu skutočný objekt. | Dynamická väzba, na väzbu použite skutočný objekt. |
Synonymá | |
Statická väzba je tiež známa ako skorá väzba. | Dynamická väzba je tiež známa ako neskorá väzba. |
Exekúcia | |
Pri statickom viazaní je rýchlosť vykonania rýchla. | Rýchlosť vykonávania je pri dynamickom viazaní nízka. |
Príklad | |
Pri preťažovaní metódy sa používa statická väzba. | Pri prepísaní metódy sa používa dynamická väzba. |
Zhrnutie - statická väzba vs dynamická väzba
Existuje prepojenie medzi volaním metódy a definíciou metódy. Je známa ako väzba. Existujú dva typy väzieb, ktoré sa nazývajú statická väzba a dynamická väzba. Rozdiel medzi statickou väzbou a dynamickou väzbou je v tom, že pri statickej väzbe je väzba vyriešená v čase kompilácie, zatiaľ čo dynamická väzba je vyriešená v čase behu, čo je skutočný čas vykonania. Pretože požadované informácie sú poskytované pred časom spustenia, statická väzba sa v porovnaní s dynamickou väzbou vykonáva rýchlo.
Stiahnite si PDF statických väzieb a dynamických väzieb
Môžete si stiahnuť PDF verziu tohto článku a použiť ju na offline účely podľa citačnej poznámky. Stiahnite si verziu PDF tu: Rozdiel medzi statickou a dynamickou väzbou