Programovací jazyky jako Java a C # podporují Object Oriented Programming (OOP). Umožňuje vytvářet software pomocí objektů. V softwarovém systému nebo programu je mnoho objektů. Tyto objekty mají atributy a metody. Atributy popisují vlastnosti. Metody popisují akce, které může objekt provádět. Data jsou předávána objekty pomocí metod. Požadované hodnoty se odesílají prostřednictvím volání metod s parametry. Skutečná implementace metody je v definici metody. Existuje spojení mezi voláním metody a definicí metody. Je znám jako vazba. Existují dva typy vazeb. Jsou to statická a dynamická vazba. klíčový rozdíl mezi statickou vazbou a dynamickou vazbou je to, ve statické vazbě je vazba vyřešena v době kompilace, zatímco dynamická vazba je vyřešena v době běhu, což je skutečný čas provedení. Tento článek popisuje rozdíl mezi těmito dvěma vazebnými mechanismy.
1. Přehled a klíčový rozdíl
2. Co je statická vazba
3. Co je dynamická vazba
4. Podobnosti mezi statickou vazbou a dynamickou vazbou
5. Porovnání vedle sebe - statické vázání vs. dynamické vázání v tabulkové formě
6. Shrnutí
Vazba je vazba mezi voláním metody a definicemi metod.
Obrázek 01: Statické vázání a dynamické vázání
Podívejte se na níže uvedený program napsaný v Javě.
veřejná třída A
public void method1 ()
System.out.println („Method1“);
public void method2 ()
System.out.println („Method2“);
public static void main (String [] args)
A obj = new A ();
obj.method1 ();
obj.method2 ();
Podle výše uvedeného programu je vytvořen objekt typu A. Poté jsou vyvolány metody1 a metody2. Určení, která metoda by měla vyžadovat provedení, se nazývá závazná. Příkaz obj.method1 () zavolá method1 () a obj.method2 () zavolá method2 (). Tento odkaz je závazný.
Při statické vazbě je vazba vyřešena kompilátorem kompilátorem. Je také známý jako časná vazba. Vazba nastane před skutečným spuštěním programu. Při přetížení metody dochází ke statické vazbě. Podívejte se na níže uvedený program napsaný v Javě.
Výpočet veřejné neplatnosti
veřejná neplatná částka (int x, int y)
System.out.println („Sum is“, x + y);
veřejný neplatný součet (dvojnásobek x, dvojnásobek 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);
cal.sum (5,1, 6,4);
Podle výše uvedeného programu bude při předávání dvou celých čísel vyvolána metoda se dvěma celými čísly. Při předávání dvou dvojitých hodnot bude vyvolána metoda odpovídající dvěma dvojitým hodnotám. K tomuto procesu vázání dochází v době kompilace. Kompilátor ví, že by měl volat metodu sum se dvěma celočíselnými hodnotami pro cal.sum (2,3). Pro cal (5.1,6.4) bude volat metodu sum se dvěma dvojitými hodnotami. Všechny požadované informace jsou známy před spuštěním, takže zvyšuje účinnost programu a rychlost provádění.
V Dynamic Binding kompilátor nevyřeší vazbu v době kompilace. K vazbě dochází za běhu. Je také známý jako pozdní vazba. Dynamické vazby dochází v převažující metodě. Viz program napsaný v jazyce Java.
veřejná třída Shape ()
veřejné neplatné losování ()
System.out.println („Draw shape“);
veřejná třída Circle () rozšiřuje tvar
veřejné neplatné losování ()
System.out.println („Nakreslit kruh“);
Veřejná třída Triangle () rozšiřuje tvar
veřejné neplatné losování ()
System.out.println („Nakreslit trojúhelník“);
test veřejné třídy
public static void main (String [] args)
Tvary;
s = nový tvar ();
s.draw ();
s = nový kruh ();
s.draw ();
s = nový trojúhelník ();
s.draw ();
Podle výše uvedeného programu má třída Shape metodu draw (). Třída Kruh a Třída Trojúhelník rozšiřuje třídu Tvar. Třída Kruh a třída Trojúhelník mohou zdědit atributy a metody třídy Tvar. Tvar třídy je proto super třídou nebo nadřazenou třídou. Kruh třídy a trojúhelník třídy jsou podtřídy nebo odvozené třídy. Tyto třídy mají také metodu draw () s vlastní implementací. Metoda draw () v super třídě je proto přepsána.
V hlavní metodě jsou vyvolány různé objekty. Existuje referenční proměnná typu Shape, což je s. Poté s vyvolá metodu podle konkrétní třídy. V době kompilace bude kompilátor odkazovat pouze na metodu supertřídy. Když začne skutečné provádění, povede to k provedení různých metod kreslení. Nejprve bude s ukazovat na objekt typu Shape. Proto vyvolá metodu draw ve třídě Shape. Pak s bude ukazovat na objekt typu Circle a vyvolá metodu draw třídy Circle. Nakonec bude s odkazovat na objekt typu Triangle a vyvolá metodu draw ve třídě Triangle. I když je referenční proměnná typu Shape, vazba se stane závislá na typu objektu. Tento koncept je známý jako Dynamic Binding. Informace je poskytována za běhu, takže rychlost provádění je pomalejší ve srovnání se statickou vazbou.
Statické vázání vs. dynamické vázání | |
Statická vazba je typ vazby, která shromažďuje všechny potřebné informace k vyvolání funkce během kompilace. | Dynamic Binding je typ vazby, který shromažďuje všechny potřebné informace k vyvolání funkce během doby běhu. |
Čas vazby | |
Statická vazba nastává v době kompilace. | K dynamické vazbě dochází za běhu. |
Funkčnost | |
Statická vazba používá pro vazbu informace o typu. | Dynamic Binding používá objekty k rozlišení k vazbě. |
Aktuální objekt | |
Statická vazba nepoužívá pro vazbu skutečný objekt. | Dynamická vazba, pro vazbu použijte skutečný objekt. |
Synonyma | |
Statická vazba je také známá jako časná vazba. | Dynamická vazba je také známá jako pozdní vazba. |
Provedení | |
Rychlost provádění je u statické vazby vysoká. | Rychlost provádění je u dynamického vázání nízká. |
Příklad | |
Při přetížení metody se používá statická vazba. | Dynamická vazba se používá v potlačení metody. |
Existuje spojení mezi voláním metody a definicí metody. Je znám jako vazba. Existují dva typy vazeb, které se nazývají statická vazba a dynamická vazba. Rozdíl mezi statickou vazbou a dynamickou vazbou je v tom, že ve statické vazbě je vazba vyřešena v době kompilace, zatímco dynamická vazba je vyřešena v době běhu, což je skutečný čas provedení. Protože požadované informace jsou poskytovány před časem běhu, statická vazba je rychlá při provádění ve srovnání s dynamickou vazbou.
Můžete si stáhnout PDF verzi tohoto článku a použít ji pro účely offline podle citace. Stáhněte si verzi PDF zde: Rozdíl mezi statickým a dynamickým vázáním
1.Java Interview 04 - Statická vazba Vs Dynamic Binding, Mahika tutoriály, 27. prosince 2017. K dispozici zde