Rozdíl mezi statickou a dynamickou vazbou

Obsah:

Rozdíl mezi statickou a dynamickou vazbou
Rozdíl mezi statickou a dynamickou vazbou

Video: Rozdíl mezi statickou a dynamickou vazbou

Video: Rozdíl mezi statickou a dynamickou vazbou
Video: Dvouhladinový systém s vazbou 2024, Listopad
Anonim

Klíčový rozdíl – statická vazba vs dynamická vazba

Programovací jazyky jako Java a C podporují objektově orientované programování (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 přes objekty pomocí metod. Požadované hodnoty jsou odesílány prostřednictvím volání metod s parametry. Vlastní implementace metody je v definici metody. Mezi voláním metody a definicí metody existuje spojení. Je známá jako vazba. Existují dva typy vazeb. Jsou to statické vazby a dynamické vazby. Klíčový 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 spuštění. Tento článek pojednává o rozdílu mezi těmito dvěma vazebnými mechanismy.

Co je statická vazba?

Vazba je spojení mezi voláním metody a definicemi metod.

Rozdíl mezi statickou vazbou a dynamickou vazbou
Rozdíl mezi statickou vazbou a dynamickou vazbou

Obrázek 01: Statická vazba a dynamická vazba

Odkaz na níže uvedený program napsaný v Javě.

veřejná třída A{

public void method1(){

System.out.println(“Metoda1”);

}

public void method2(){

System.out.println(“Metoda2”);

}

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 volány metody1 a metoda2. Identifikace, která metoda by měla volat k provedení, se nazývá vazba. Příkaz obj.method1() zavolá metodu1() a obj.method2() zavolá metodu2(). Tento odkaz je závazný.

V případě statické vazby je vazba vyřešena v době kompilace kompilátorem. Je také známá jako časná vazba. K vázání dochází před skutečným spuštěním programu. Ke statické vazbě dochází při přetížení metody. Podívejte se na níže uvedený program napsaný v Javě.

public void Calculation{

veřejný neplatný součet(int x, int y){

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

}

veřejný neplatný součet(dvojité x, dvojité y){

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

}

public static void main(String args){

Calculation cal=new Calculation();

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 hodnot typu double bude vyvolána metoda odpovídající dvěma hodnotám typu double. K tomuto procesu vazby 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) zavolá metodu součtu se dvěma dvojitými hodnotami. Všechny požadované informace jsou známy před spuštěním, takže to zvyšuje efektivitu programu a rychlost provádění.

Co je dynamická vazba?

V dynamické vazbě kompilátor neřeší vazbu v době kompilace. K vázání dochází za běhu. Je také známá jako pozdní vazba. Dynamická vazba se vyskytuje při přepisování metody. Viz program napsaný v Javě.

public class Shape(){

public void draw(){

System.out.println(“Nakreslit tvar”);

}

}

public class Circle() rozšiřuje tvar{

public void draw(){

System.out.println(“Nakreslit kruh”);

}

}

public class Triangle() rozšiřuje tvar{

public void draw(){

System.out.println(“Nakreslit trojúhelník”);

}

}

test veřejné třídy{

public static void main(string args){

Shape s;

s=new Shape();

s.draw();

s=new Circle();

s.draw();

s=new Triangle();

s.draw();

}

}

Podle výše uvedeného programu má třída Shape metodu draw(). Class Circle a class Triangle rozšiřují třídu Shape. Class Circle a class Triangle mohou zdědit atributy a metody třídy Shape. Třída Shape je tedy supertřída nebo nadřazená třída. Class Circle a Class Triangle jsou podtřídy nebo odvozené třídy. Tyto třídy mají také metodu draw() s vlastními implementacemi. Proto je metoda draw() v supertřídě přepsána.

V hlavní metodě jsou vyvolány různé objekty. Existuje referenční proměnná typu Shape, což je s. Potom s vyvolá metodu podle konkrétní třídy. V době kompilace bude kompilátor odkazovat pouze na metodu kreslení super třídy. Když skutečné provádění začne, povede to k provedení různých metod losování. Nejprve bude s ukazovat na objekt typu Shape. Proto vyvolá metodu draw ve třídě Shape. Potom bude s ukazovat na objekt typu Circle a vyvolá metodu draw třídy Circle. Nakonec s bude odkazovat na objekt typu Triangle a vyvolá metodu draw ve třídě Triangle. I když je referenční proměnná typu Shape, vazba náhodou závisí na typu objektu. Tento koncept je známý jako Dynamic Binding. Informace jsou poskytovány za běhu, takže rychlost provádění je ve srovnání se statickou vazbou pomalejší.

Jaká je podobnost mezi statickou vazbou a dynamickou vazbou?

Obojí souvisí s polymorfismem, který umožňuje objektu chovat se více způsoby

Jaký je rozdíl mezi statickou vazbou a dynamickou vazbou?

Statická vazba vs dynamická vazba

Statická vazba je typ vazby, která shromažďuje všechny požadované informace k volání funkce během kompilace. Dynamická vazba je typ vazby, který shromažďuje všechny požadované informace pro volání funkce během běhu.
Doba vázání
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. Dynamická vazba používá objekty k vyřešení vazby.
Skutečný 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 známá také jako pozdní vazba.
Provedení
Rychlost provádění je při statické vazbě vysoká. Rychlost provádění je u dynamické vazby nízká.
Příklad
Statická vazba se používá při přetěžování metody. Dynamická vazba se používá při přepisování metody.

Shrnutí – Statická vazba vs dynamická vazba

Mezi voláním metody a definicí metody existuje spojení. Je známá jako vazba. Existují dva typy vazeb, které se nazývají statické a dynamické. Rozdíl mezi statickou 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 spuštění. Protože jsou požadované informace poskytnuty před spuštěním, statická vazba je ve srovnání s dynamickou vazbou rychlá.

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

Verzi tohoto článku si můžete stáhnout ve formátu PDF a použít ji pro offline účely podle citace. Stáhněte si prosím verzi PDF zde: Rozdíl mezi statickou vazbou a dynamickou vazbou

Doporučuje: