Klíčový rozdíl - statická vazba vs. dynamická vazba
Programovací jazyky jako Java a C # podporují objektově orientované programování (OOP). Umožňuje vytváření softwaru 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é lze provést objektem. Data se předávají pomocí metod pomocí metod. Požadované hodnoty jsou odesílány 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á vazba a dynamická vazba. Klíčovým rozdílem mezi statickou vazbou a dynamickou vazbou je, ž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á doba provedení. Tento článek pojednává o rozdílu 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á vazba vs. dynamická vazba ve formě tabulky
6. Shrnutí
Co je statická vazba?
Vazba je spojení mezi voláním metody a definicí metody.
Obrázek 01: Statické vazby a dynamické vazby
Viz 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 metody 1 a 2. Identifikace, která metoda by měla volat k provedení, se nazývá vazba. Příkaz obj.method1 () zavolá method1 () a obj.method2 () zavolá method2 (). Tento odkaz je závazný.
Ve statické vazbě je vazba vyřešena v době kompilace kompilátorem. Je také známá jako časná vazba. Vazba se stane před spuštěním programu. Při přetížení metody dochází ke statické vazbě. Viz níže uvedený program napsaný v Javě.
výpočet veřejné neplatnosti {
public void sum (int x, int y) {
System.out.println („Součet je“, x + y);
}
veřejná neplatná částka (double x, double y) {
System.out.println („Součet je“, x + y);
}
public static void main (String args) {
Výpočet cal = nový Výpočet ();
kal. součet (2,3);
kal. součet (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 dvojnásobných hodnot bude vyvolána metoda odpovídající dvěma dvojnásobným hodnotám. K tomuto procesu vazby dochází v době kompilace. Kompilátor ví, že by měl volat metodu součtu se dvěma celočíselnými hodnotami pro cal.sum (2,3). Pro cal (5.1,6.4) bude volat metodu součtu se dvěma dvojnásobnými hodnotami. Všechny požadované informace jsou známy před spuštěním, takže zvyšuje efektivitu programu a rychlost jeho provádění.
Co je dynamická vazba?
V dynamické vazbě kompilátor nevyřeší vazbu v době kompilace. K vazbě dochází za běhu. Je také známá jako pozdní vazba. K dynamické vazbě dochází při přepsání metody. Viz program napsaný v Javě.
public class Shape () {
public void draw () {
System.out.println („Nakreslit tvar“);
}
}
public class Circle () rozšiřuje Shape {
public void draw () {
System.out.println („Nakreslit kruh“);
}
}
public class Triangle () extends Shape {
public void draw () {
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 (). Class Circle a class Triangle rozšiřuje třídu Shape. Kruh třídy a trojúhelník třídy mohou zdědit atributy a metody třídy Shape. Třída Shape je tedy super třída nebo nadřazená třída. Class Circle a Class Triangle jsou dílčí třídy nebo odvozené třídy. Tyto třídy mají také metodu draw () s vlastními implementacemi. Proto je metoda draw () v super třídě přepsána.
V hlavní metodě jsou vyvolány různé objekty. Existuje referenční proměnná typu Shape, která 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ž začne skutečné provádění, povede to k provedení různých metod kreslení. Nejprve bude s směřovat na objekt typu Shape. Proto vyvolá metodu draw ve třídě Shape. Potom s bude směřovat 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 se stane závislou na typu objektu. Tento koncept je znám jako Dynamic Binding. Informace jsou poskytovány za běhu,takže rychlost provedení 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 několika způsoby
Jaký je rozdíl mezi statickou vazbou a dynamickou vazbou?
Rozdílný článek uprostřed před tabulkou
Statická vazba vs dynamická vazba |
|
Statická vazba je typ vazby, která shromažďuje všechny požadované informace pro 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. |
Čas vazby | |
Ke statické vazbě dochází v době kompilace. | Dynamická vazba nastává za běhu. |
Funkčnost | |
Statická vazba používá pro vazbu informace o typu. | Dynamická vazba používá k vyřešení vazby objekty. |
Skutečný objekt | |
Statická vazba nepoužívá pro vazbu skutečný objekt. | Dynamická vazba, k vazbě 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 ve statické vazbě rychlá. | Rychlost provádění je u dynamické vazby nízká. |
Příklad | |
Při přetížení metody se používá statická vazba. | Při přepsání metody se používá dynamická vazba. |
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 spočívá 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í. Vzhledem k tomu, že před spuštěním jsou poskytnuty požadované informace, je statická vazba ve srovnání s dynamickou vazbou rychlá při provádění.
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 offline účely podle citace. Stáhněte si verzi PDF zde: Rozdíl mezi statickou vazbou a dynamickou vazbou