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