Nøgleforskel – statisk binding vs dynamisk binding
Programmeringssprog såsom Java og C understøtter objektorienteret programmering (OOP). Det gør det muligt at bygge software ved hjælp af objekter. Der er mange objekter i et softwaresystem eller et program. Disse objekter har egenskaber og metoder. Attributter beskriver egenskaberne. Metoder beskriver de handlinger, der kan udføres af objektet. Data sendes gennem objekter ved hjælp af metoder. De nødvendige værdier sendes gennem metodekald med parametre. Selve metodeimplementeringen er i metodedefinitionen. Der er en sammenhæng mellem et metodekald og metodedefinition. Det er kendt som binding. Der er to typer bindinger. De er statisk binding og dynamisk binding. Den vigtigste forskel mellem statisk binding og dynamisk binding er, at ved statisk binding løses bindingen på kompileringstidspunktet, mens dynamisk binding løses ved kørselstiden, som er det faktiske tidspunkt for udførelse. Denne artikel diskuterer forskellen mellem disse to bindingsmekanismer.
Hvad er statisk binding?
Binding er forbindelsen mellem et metodekald og metodedefinitioner.
Figur 01: Statisk binding og dynamisk binding
Se nedenstående program skrevet i Java.
offentlig klasse A{
offentlig ugyldig metode1(){
System.out.println(“Method1”);
}
offentlig ugyldig metode2(){
System.out.println(“Method2”);
}
public static void main(String args){
A obj=new A();
obj.method1();
obj.method2();
}
}
I henhold til ovenstående program oprettes et objekt af type A. Derefter kaldes metode1 og metode2. At identificere, hvilken metode der skal kaldes til eksekvering, er kendt som binding. Udsagn obj.method1() vil kalde metode1() og obj.method2() vil kalde metode2(). Dette link er bindende.
Ved statisk binding løses binding på kompileringstidspunktet af compileren. Det er også kendt som tidlig binding. Binding sker før et program rent faktisk kører. Statisk binding forekommer ved metodeoverbelastning. Se nedenstående program skrevet i Java.
offentlig ugyldig beregning{
offentlig ugyldig sum(int x, int y){
System.out.println(“Sum er “, x+y);
}
offentlig ugyldig sum(dobbelt x, dobbelt y){
System.out.println(“Sum er “, x+y);
}
public static void main(String args){
Calculation cal=new Calculation();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Ifølge ovenstående program vil metoden med to heltal blive aktiveret, når de to heltal passeres. Når to dobbelte værdier sendes, vil den metode, der svarer til to dobbelte værdier, blive aktiveret. Denne bindingsproces finder sted på tidspunktet for kompilering. Compileren ved, at den skal kalde summetoden med to heltalsværdier for cal.sum(2, 3). For cal(5.1, 6.4) vil den kalde summetoden med to dobbelte værdier. Al nødvendig information er kendt før runtime, så det øger programmets effektivitet og eksekveringshastighed.
Hvad er dynamisk binding?
I Dynamic Binding løser compileren ikke bindingen på kompileringstidspunktet. Binding sker ved kørselstid. Det er også kendt som sen binding. Dynamisk binding forekommer i metodetilsidesættelse. Se program skrevet i Java.
public class Shape(){
public void draw(){
System.out.println(“Tegn form”);
}
}
public class Circle() udvider Shape{
public void draw(){
System.out.println(“Tegn cirkel”);
}
}
public class Triangle() udvider Form{
public void draw(){
System.out.println(“Tegn trekant”);
}
}
offentlig klasseprøve{
public static void main(String args){
Shape s;
s=new Shape();
s.draw();
s=new Circle();
s.draw();
s=ny trekant();
s.draw();
}
}
Ifølge ovenstående program har klasse Shape en metode draw(). Klassecirkel og klassetrekant udvider formklassen. Klassecirkel og klassetrekant kan arve attributterne og metoderne i klassen Shape. Derfor er klassen Shape superklassen eller forældreklassen. Klassecirkel og klassetrekant er underklasser eller afledte klasser. Disse klasser har også draw()-metoden med deres egne implementeringer. Derfor er draw()-metoden i superklassen tilsidesat.
I hovedmetoden kaldes forskellige objekter. Der er en referencevariabel af Shape-typen, som er s. Derefter påberåber s metoden i henhold til den specifikke klasse. På kompileringstidspunktet vil compileren kun henvise til superklassens tegningsmetode. Når den faktiske udførelse begynder, vil det føre til udførelse af forskellige tegningsmetoder. Først vil s pege på objektet af typen Shape. Derfor vil det påberåbe tegnemetoden i Shape-klassen. Så vil s'et pege på objektet af typen Circle, og det vil påkalde tegnemetoden i Circle-klassen. Endelig vil s referere til objektet af typen Triangle, og det vil påkalde tegnemetoden i Triangle-klassen. Selvom referencevariablen er af typen Shape, afhænger bindingen tilfældigvis af objekttypen. Dette koncept er kendt som Dynamic Binding. Oplysningerne leveres ved kørselstid, så hastigheden af udførelse er langsommere sammenlignet med statisk binding.
Hvad er ligheden mellem statisk binding og dynamisk binding?
Begge disse er relateret til en polymorfi, der tillader et objekt at opføre sig på flere måder
Hvad er forskellen mellem statisk binding og dynamisk binding?
Statisk binding vs. dynamisk binding |
|
Statisk binding er den type binding, der indsamler alle nødvendige oplysninger for at kalde en funktion under kompileringstiden. | Dynamic Binding er den type binding, der indsamler alle nødvendige oplysninger for at kalde en funktion under kørselstiden. |
Tidspunkt for binding | |
Statisk binding finder sted på kompileringstidspunktet. | Dynamisk binding finder sted under kørsel. |
Functionality | |
Static Binding bruger typeoplysninger til indbinding. | Dynamic Binding bruger objekter til at løse til at binde. |
Faktisk objekt | |
Statisk binding bruger ikke et faktisk objekt til binding. | Dynamisk binding, brug det faktiske objekt til binding. |
Synonymer | |
Statisk binding er også kendt som tidlig binding. | Dynamisk binding er også kendt som sen binding. |
Udførelse | |
Udførelseshastigheden er høj ved statisk binding. | Udførelseshastigheden er lav ved dynamisk binding. |
Eksempel | |
Statisk binding bruges ved metodeoverbelastning. | Dynamisk binding bruges i metodetilsidesættelse. |
Opsummering – Statisk binding vs dynamisk binding
Der er en forbindelse mellem et metodekald og metodedefinition. Det er kendt som binding. Der er to typer bindinger kaldet statisk binding og dynamisk binding. Forskellen mellem statisk binding og dynamisk binding er, at ved statisk binding løses bindingen på kompileringstidspunktet, mens dynamisk binding løses ved kørselstidspunktet, som er det faktiske tidspunkt for udførelse. Da de påkrævede oplysninger leveres før køretid, er statisk binding hurtig i udførelse sammenlignet med dynamisk binding.
Download PDF'en af Static Binding vs Dynamic Binding
Du kan downloade PDF-versionen af denne artikel og bruge den til offline-formål i henhold til citatnotat. Download venligst PDF-versionen her: Difference Between Static Binding og Dynamic Binding