Rozdíl mezi statickým a dynamickým vázáním

Klíčový rozdíl - statický Vazba vs. dynamická vazba
 

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.

OBSAH

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í

Co je statická vazba?

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í.

Co je dynamická vazba?

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.

Jaká je podobnost mezi statickou vazbou a dynamickou vazbou?

  • Oba jsou spojeny s polymorfismem, který umožňuje objektu chovat se více způsoby.

Jaký je rozdíl mezi statickým a dynamickým vázáním?

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.

Shrnutí - statické Vazba vs. dynamická vazba 

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.

Stáhněte si PDF statické vazby vs. dynamické vazby

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

Odkaz:

1.Java Interview 04 - Statická vazba Vs Dynamic Binding, Mahika tutoriály, 27. prosince 2017. K dispozici zde