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: Ako sa stať vysokoškolákom?: Aký je rozdiel medzi stredoškolskou a vysokoškolskou matematikou? 2024, Júl
Anonim

Kľúčový rozdiel – statické viazanie vs dynamické viazanie

Programovacie jazyky ako Java a C podporujú objektovo orientované programovanie (OOP). Umožňuje vytvárať 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ú činnosti, ktoré môže objekt vykonať. Údaje sa prenášajú cez objekty pomocou metód. Požadované hodnoty sa odosielajú prostredníctvom volaní metódy s parametrami. Samotná implementácia metódy je v definícii metódy. Medzi volaním metódy a definíciou metódy existuje prepojenie. Je známy ako viazanie. Existujú dva typy viazania. Sú to statické väzby a dynamické väzby. Kľúčový rozdiel medzi statickou väzbou a dynamickou väzbou je v tom, že pri statickej väzbe sa väzba rieši v čase kompilácie, zatiaľ čo dynamická väzba sa rieši v čase spustenia, čo je skutočný čas vykonania. Tento článok pojednáva o rozdieloch medzi týmito dvoma väzbovými mechanizmami.

Čo je statická väzba?

Väzba je prepojenie 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á väzba a dynamická väzba

Pozri nižšie uvedený program napísaný 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=new A();

obj.method1();

obj.method2();

}

}

Podľa vyššie uvedeného programu sa vytvorí objekt typu A. Potom sa zavolajú metóda1 a metóda2. Identifikácia, ktorá metóda by mala volať na vykonanie, je známa ako väzba. Príkaz obj.method1() zavolá metódu1() a príkaz obj.method2() zavolá metódu2(). Tento odkaz je záväzný.

V statickej väzbe je väzba vyriešená v čase kompilácie kompilátorom. Je tiež známy ako skorá väzba. Väzba sa uskutoční pred skutočným spustením programu. K statickej väzbe dochádza pri preťažení metódy. Pozrite si nižšie uvedený program napísaný v jazyku Java.

public void Calculation{

public void sum(int x, int y){

System.out.println(“Súčet je “, x+y);

}

verejná neplatná suma(dvojité x, dvojité y){

System.out.println(“Súčet je “, x+y);

}

public static void main(String args){

Calculation cal=new Calculation();

cal.sum(2, 3);

cal.sum(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 prebieha v čase kompilácie. Kompilátor vie, že by mal volať metódu sum s dvomi celočíselnými hodnotami pre cal.sum(2, 3). Pre cal(5.1, 6.4) zavolá metódu súčtu s dvoma dvojitými hodnotami. Všetky požadované informácie sú známe ešte pred spustením, čo zvyšuje efektivitu programu a rýchlosť vykonávania.

Čo je dynamické viazanie?

V dynamickej väzbe kompilátor nevyrieši väzbu v čase kompilácie. Väzba sa vyskytuje v čase spustenia. Je tiež známy ako neskorá väzba. Dynamická väzba sa vyskytuje pri prepisovaní metódy. Pozrite si program napísaný v jazyku Java.

public class Shape(){

public void draw(){

System.out.println(“Nakresliť tvar”);

}

}

verejná trieda Circle() rozširuje tvar{

public void draw(){

System.out.println(“Nakresliť kruh”);

}

}

public class Triangle() rozširuje tvar{

public void draw(){

System.out.println(“Nakresliť trojuholník”);

}

}

test verejnej triedy{

public static void main(String args){

Shape s;

s=new Shape();

s.draw();

s=new Circle();

s.draw();

s=new Triangle();

s.draw();

}

}

Podľa vyššie uvedeného programu má trieda Shape metódu draw(). Class Circle a class Triangle rozširujú triedu Shape. Triedy Circle a Triangle môžu zdediť atribúty a metódy triedy Shape. Preto je trieda Shape supertriedou alebo nadradenou triedou. Class Circle a Class Triangle sú podtriedy alebo odvodené triedy. Tieto triedy majú tiež metódu draw() s vlastnými implementáciami. Preto je metóda draw() v supertriede 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 špecifickej triedy. V čase kompilácie bude kompilátor odkazovať iba na metódu kreslenia super triedy. Keď začne skutočné vykonávanie, povedie to k vykonaniu rôznych metód žrebovania. Po prvé, s bude ukazovať na objekt typu Shape. Preto v triede Shape vyvolá metódu draw. Potom bude s ukazovať na objekt typu Circle a vyvolá metódu draw 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 dynamické viazanie. Informácie sa poskytujú za behu, takže rýchlosť vykonávania je pomalšia v porovnaní so statickou väzbou.

Aká je podobnosť medzi statickou väzbou a dynamickou väzbou?

Obaja súvisia s polymorfizmom, ktorý umožňuje objektu správať sa viacerými spôsobmi

Aký je rozdiel medzi statickou väzbou a dynamickou väzbou?

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é viazanie je typ väzby, ktorý zhromažďuje všetky požadované informácie na volanie funkcie počas spustenia.
Čas viazanosti
Statická väzba nastáva v čase kompilácie. Dynamické viazanie sa vyskytuje počas spustenia.
Funkčnosť
Statická väzba používa na väzbu informácie o type. Dynamické viazanie používa objekty na rozlíšenie na viazanie.
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 známa aj ako skorá väzba. Dynamické viazanie je známe aj ako neskoré viazanie.
Vykonanie
Rýchlosť vykonávania je pri statickej väzbe vysoká. Rýchlosť vykonávania je pri dynamickej väzbe nízka.
Príklad
Statická väzba sa používa pri preťažovaní metódy. Pri prepisovaní metódy sa používa dynamická väzba.

Súhrn – statické viazanie vs dynamické viazanie

Medzi volaním metódy a definíciou metódy existuje prepojenie. Je známy ako viazanie. Existujú dva typy väzieb, ktoré sa nazývajú statické a dynamické. Rozdiel medzi statickou väzbou a dynamickou väzbou je v tom, že pri statickej väzbe sa väzba rieši v čase kompilácie, zatiaľ čo dynamická väzba sa rieši v čase spustenia, čo je skutočný čas vykonania. Keďže požadované informácie sú poskytnuté pred spustením, statické viazanie je rýchle v porovnaní s dynamickým viazaním.

Stiahnite si PDF so statickou väzbou vs dynamickou väzbou

Verziu tohto článku si môžete stiahnuť vo formáte PDF a použiť ju na offline účely podľa citácie. Stiahnite si verziu PDF tu: Rozdiel medzi statickou väzbou a dynamickou väzbou

Odporúča: