Különbség a statikus kötés és a dinamikus kötés között

Tartalomjegyzék:

Különbség a statikus kötés és a dinamikus kötés között
Különbség a statikus kötés és a dinamikus kötés között

Videó: Különbség a statikus kötés és a dinamikus kötés között

Videó: Különbség a statikus kötés és a dinamikus kötés között
Videó: Számítógép hálózatok 11. gyakorlat (2017): Statikus és dinamikus NAT 2024, Július
Anonim

Kulcskülönbség – Statikus kötés vs dinamikus kötés

A programozási nyelvek, például a Java és a C támogatják az objektumorientált programozást (OOP). Lehetővé teszi szoftverek létrehozását objektumok felhasználásával. Egy szoftverrendszerben vagy programban sok objektum található. Ezek az objektumok attribútumokkal és metódusokkal rendelkeznek. Az attribútumok leírják a jellemzőket. A metódusok leírják az objektum által végrehajtható műveleteket. Az adatok metódusok segítségével jutnak át objektumokon. A szükséges értékek paraméterekkel ellátott metódushívásokon keresztül kerülnek elküldésre. A metódus tényleges megvalósítása a metódusdefinícióban található. A metódushívás és a metódusdefiníció között kapcsolat van. Kötözésnek nevezik. Kétféle kötés létezik. Ezek statikus kötés és dinamikus kötés. A statikus kötés és a dinamikus kötés közötti legfontosabb különbség az, hogy a statikus összerendelésnél az összerendelés a fordítási időben, míg a dinamikus összerendelés a futási időben, azaz a végrehajtás tényleges időpontjában kerül feloldásra. Ez a cikk a két kötési mechanizmus közötti különbséget tárgyalja.

Mi az a statikus kötés?

A kötés a kapcsolat a metódushívás és a metódusdefiníciók között.

Különbség a statikus kötés és a dinamikus kötés között
Különbség a statikus kötés és a dinamikus kötés között

01. ábra: Statikus kötés és dinamikus kötés

Tekintse meg az alábbi, Java nyelven írt programot.

A nyilvános osztály{

public void method1(){

System.out.println(“1. módszer”);

}

public void method2(){

System.out.println(“2. módszer”);

}

public static void main(String args){

A obj=new A();

obj.method1();

obj.method2();

}

}

A fenti program szerint egy A típusú objektum jön létre. Ekkor a metódus1 és a metódus2 meghívásra kerül. Annak azonosítása, hogy melyik metódus kérjen végrehajtást, kötésnek nevezik. Az obj.method1() utasítás a method1()-t, az obj.method2() pedig a method2()-t hívja meg. Ez a link kötelező érvényű.

Statikus összerendelés esetén az összerendelést a fordító fordítja fel a fordításkor. Korai kötésként is ismert. A kötés még a program tényleges lefutása előtt megtörténik. A metódus túlterhelése esetén statikus kötés lép fel. Tekintse meg az alábbi, Java nyelven írt programot.

public void számítás{

public void sum(int x, int y){

System.out.println("Összeg", x+y);

}

nyilvános érvénytelen összeg(dupla x, dupla y){

System.out.println("Összeg", x+y);

}

public static void main(String args){

Számítás cal=new Calculation();

cal.sum(2, 3);

cal.sum(5,1, 6,4);

}

}

A fenti program szerint a két egész szám átadásakor a két egész számmal rendelkező metódus kerül meghívásra. Két dupla érték átadásakor a két dupla értéknek megfelelő metódus kerül meghívásra. Ez a kötési folyamat az összeállításkor történik. A fordító tudja, hogy a cal.sum(2, 3) két egész értékkel kell meghívnia a sum metódust. A cal(5.1, 6.4) esetén az összeg módszert hívja meg két dupla értékkel. Minden szükséges információ ismert futási idő előtt, így növeli a program hatékonyságát és végrehajtási sebességét.

Mi az a dinamikus kötés?

Dinamikus kötésben a fordító nem oldja fel a kötést a fordítási időben. A kötés futási időben történik. Késői kötésnek is nevezik. A dinamikus kötés a metódus felülbírálásakor történik. Lásd a Java nyelven írt programot.

nyilvános osztály Alakzat(){

nyilvános érvénytelen sorsolás(){

System.out.println("Alakzat rajzolása");

}

}

public class Circle() kiterjeszti az alakzatot{

nyilvános érvénytelen sorsolás(){

System.out.println("Kör rajzolása");

}

}

public class Triangle() kiterjeszti az alakzatot{

nyilvános érvénytelen sorsolás(){

System.out.println(“Háromszög rajzolása”);

}

}

nyilvános osztály teszt{

public static void main(String args){

Shape s;

s=új alakzat();

s.draw();

s=új kör();

s.draw();

s=új háromszög();

s.draw();

}

}

A fenti program szerint a Shape osztálynak van egy draw() metódusa. Osztály Kör és osztály Háromszög kiterjeszti az Alakosztályt. A Circle osztály és a Triangle osztály örökölheti az Shape osztály attribútumait és metódusait. Ezért a Shape osztály a szuperosztály vagy a szülőosztály. Az Osztálykör és az Osztályháromszög alosztályok vagy származtatott osztályok. Ezeknek az osztályoknak is van draw() metódusa saját implementációjukkal. Ezért a szuper osztályban a draw() metódus felülírásra kerül.

A fő metódusban különböző objektumok kerülnek meghívásra. Van egy Shape típusú referenciaváltozó, ami az s. Ezután az s meghívja a metódust az adott osztálynak megfelelően. Fordításkor a fordító csak a szuperosztályrajzi módszerre hivatkozik. Amikor a tényleges végrehajtás elkezdődik, az különböző rajzolási módszerek végrehajtásához vezet. Először is az s a Shape típusú objektumra mutat. Ezért meghívja a rajzolási metódust a Shape osztályban. Ekkor az s a Circle típusú objektumra mutat, és meghívja a Circle osztály rajzolási metódusát. Végül az s a Triangle típusú objektumra fog hivatkozni, és meghívja a rajzolási metódust a Triangle osztályban. Annak ellenére, hogy a referenciaváltozó Shape típusú, az összerendelés az objektum típusától függ. Ez a koncepció dinamikus kötés néven ismert. Az információ futási időben történik, így a végrehajtás sebessége lassabb a statikus kötéshez képest.

Mi a hasonlóság a statikus kötés és a dinamikus kötés között?

Mindkettő olyan polimorfizmushoz kapcsolódik, amely lehetővé teszi, hogy egy objektum többféleképpen viselkedjen

Mi a különbség a statikus kötés és a dinamikus kötés között?

Statikus kötés kontra dinamikus kötés

A statikus összerendelés az a kötéstípus, amely összegyűjti az összes szükséges információt a függvény hívásához a fordítási idő alatt. A dinamikus kötés az az összerendelés típusa, amely összegyűjti az összes szükséges információt a függvény futás közbeni meghívásához.
A kötés ideje
A statikus kötés a fordítási időben történik. Dinamikus kötés a futásidőben történik.
Funkcionalitás
A statikus kötés típusinformációkat használ a kötéshez. A dinamikus kötés objektumok segítségével oldja meg a kötést.
Tényleges objektum
A statikus kötés nem használ tényleges objektumot a kötéshez. Dinamikus kötés, használja a tényleges objektumot a kötéshez.
Szinonimák
A statikus kötés korai kötésként is ismert. A dinamikus kötés késői kötésként is ismert.
Végrehajtás
A végrehajtási sebesség gyors statikus kötésben. A végrehajtási sebesség alacsony a dinamikus kötésben.
Példa
A metódus túlterhelésénél a statikus kötést használják. Dinamikus kötés használatos a metódus felülbírálásakor.

Összefoglaló – Statikus kötés kontra dinamikus kötés

Van kapcsolat a metódushívás és a metódusdefiníció között. Kötözésnek nevezik. Kétféle kötés létezik: statikus kötés és dinamikus kötés. A statikus kötés és a dinamikus kötés közötti különbség az, hogy a statikus kötésben az összerendelés a fordítási időben, míg a dinamikus kötés a futási időben, azaz a végrehajtás tényleges időpontjában oldódik fel. Mivel a szükséges információk a futási idő előtt rendelkezésre állnak, a statikus összerendelés gyorsabb a dinamikus összerendeléshez képest.

Töltse le a statikus kötés és a dinamikus kötés PDF-fájlját

A cikk PDF-verzióját letöltheti, és offline célokra használhatja az idézési megjegyzés szerint. Kérjük, töltse le a PDF verziót innen: Különbség a statikus kötés és a dinamikus kötés között

Ajánlott: