Rozdiel Medzi Statickou Väzbou A Dynamickou Väzbou

Obsah:

Rozdiel Medzi Statickou Väzbou A Dynamickou Väzbou
Rozdiel Medzi Statickou Väzbou A Dynamickou Väzbou

Video: Rozdiel Medzi Statickou Väzbou A Dynamickou Väzbou

Video: Rozdiel Medzi Statickou Väzbou A Dynamickou Väzbou
Video: Густой туман - VOLVO FH13 500HP 2024, Smieť
Anonim

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.

Rozdiel medzi statickou väzbou a dynamickou väzbou
Rozdiel medzi statickou väzbou a dynamickou väzbou

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

Odporúčaná: