Skillnaden mellan statisk bindning och dynamisk bindning

Innehållsförteckning:

Skillnaden mellan statisk bindning och dynamisk bindning
Skillnaden mellan statisk bindning och dynamisk bindning

Video: Skillnaden mellan statisk bindning och dynamisk bindning

Video: Skillnaden mellan statisk bindning och dynamisk bindning
Video: Java Interview 04 - Static Binding Vs Dynamic Binding 2024, Juli
Anonim

nyckelskillnad – statisk bindning vs dynamisk bindning

Programmeringsspråk som Java och C stöder Object Oriented Programming (OOP). Det gör det möjligt att bygga programvara med hjälp av objekt. Det finns många objekt i ett mjukvarusystem eller ett program. Dessa objekt har attribut och metoder. Attribut beskriver egenskaperna. Metoder beskriver de åtgärder som kan utföras av objektet. Data skickas genom objekt med hjälp av metoder. De erforderliga värdena skickas genom metodanrop med parametrar. Själva metodimplementeringen finns i metoddefinitionen. Det finns en koppling mellan ett metodanrop och metoddefinition. Det är känt som bindande. Det finns två typer av bindningar. De är statisk bindning och dynamisk bindning. Den viktigaste skillnaden mellan statisk bindning och dynamisk bindning är att vid statisk bindning löses bindningen vid kompileringstiden medan dynamisk bindning löses vid körningstiden, vilket är den faktiska tiden för exekvering. Den här artikeln diskuterar skillnaden mellan dessa två bindningsmekanismer.

Vad är statisk bindning?

Bindning är länken mellan ett metodanrop och metoddefinitioner.

Skillnaden mellan statisk bindning och dynamisk bindning
Skillnaden mellan statisk bindning och dynamisk bindning

Figur 01: Statisk bindning och dynamisk bindning

Se programmet nedan skrivet i Java.

public klass A{

public void method1(){

System.out.println(“Method1”);

}

public void method2(){

System.out.println(“Method2”);

}

public static void main(String args){

A obj=new A();

obj.method1();

obj.method2();

}

}

Enligt programmet ovan skapas ett objekt av typ A. Sedan anropas metod1 och metod2. Att identifiera vilken metod som ska anropa för exekvering kallas bindande. Uttalandet obj.method1() kommer att anropa metod1() och obj.method2() kommer att anropa metod2(). Den här länken är bindande.

I statisk bindning löses bindning vid kompilering av kompilatorn. Det är också känt som tidig bindning. Bindning sker innan ett program faktiskt körs. Statisk bindning sker vid metodöverbelastning. Se programmet nedan skrivet i Java.

public void-beräkning{

public void summa(int x, int y){

System.out.println(“Summa är “, x+y);

}

public void summa(dubbel x, dubbel y){

System.out.println(“Summa är “, x+y);

}

public static void main(String args){

Calculation cal=new Calculation();

cal.sum(2, 3);

cal.sum(5.1, 6.4);

}

}

Enligt ovanstående program kommer metoden med två heltal att anropas när de två heltal passeras. När två dubbla värden skickas kommer metoden som motsvarar två dubbla värden att anropas. Denna bindningsprocess inträffar vid tidpunkten för sammanställningen. Kompilatorn vet att den ska anropa summametoden med två heltalsvärden för cal.sum(2, 3). För cal(5.1, 6.4) anropar den summametoden med två dubbla värden. All nödvändig information är känd före körning, så det ökar programmets effektivitet och exekveringshastighet.

Vad är dynamisk bindning?

I Dynamic Binding löser inte kompilatorn bindningen vid kompilering. Bindning sker vid körning. Det är också känt som sen bindning. Dynamisk bindning förekommer i metodöverstyrning. Se program skrivet i Java.

public class Shape(){

public void draw(){

System.out.println(“Rita form”);

}

}

public class Circle() utökar Shape{

public void draw(){

System.out.println(“Rita cirkel”);

}

}

public class Triangle() utökar formen{

public void draw(){

System.out.println(“Rita triangel”);

}

}

prov för offentlig klass{

public static void main(String args){

Shape s;

s=new Shape();

s.draw();

s=new Circle();

s.draw();

s=ny triangel();

s.draw();

}

}

Enligt programmet ovan har klassen Shape en metod draw(). Klass Cirkel och klass Triangel utökar Shape-klassen. Klass Cirkel och klass Triangel kan ärva attributen och metoderna för klassen Shape. Därför är klassen Shape superklassen eller förälderklassen. Klasscirkel och klasstriangel är underklasser eller härledda klasser. Dessa klasser har också metoden draw() med sina egna implementeringar. Därför åsidosätts draw()-metoden i superklassen.

I huvudmetoden anropas olika objekt. Det finns en referensvariabel av Shape-typ, som är s. Sedan anropar s metoden enligt den specifika klassen. Vid kompilering kommer kompilatorn endast att hänvisa till superklassritningsmetoden. När det faktiska utförandet börjar kommer det att leda till att olika ritmetoder körs. Först kommer s att peka på objektet av typen Shape. Därför kommer den att anropa ritmetoden i Shape-klassen. Då kommer s:et att peka på objektet av typen Circle, och det kommer att anropa ritmetoden för Circle-klassen. Slutligen kommer s att hänvisa till objektet av typen Triangle, och det kommer att anropa ritmetoden i klassen Triangle. Även om referensvariabeln är av typen Shape, råkar bindningen bero på objekttypen. Detta koncept är känt som Dynamic Binding. Informationen tillhandahålls vid körning, så körningshastigheten är långsammare jämfört med statisk bindning.

Vad är likheten mellan statisk bindning och dynamisk bindning?

Båda dessa är relaterade till en polymorfism som gör att ett objekt kan bete sig på flera sätt

Vad är skillnaden mellan statisk bindning och dynamisk bindning?

Statisk bindning vs dynamisk bindning

Statisk bindning är den typ av bindning som samlar in all nödvändig information för att anropa en funktion under kompileringstiden. Dynamic Binding är den typ av bindning som samlar in all nödvändig information för att anropa en funktion under körning.
Tid för bindning
Statisk bindning sker vid kompilering. Dynamisk bindning sker under körning.
Functionality
Static Binding använder typinformation för bindning. Dynamic Binding använder objekt för att lösa till bindning.
Faktiskt objekt
Statisk bindning använder inte ett faktiskt objekt för bindning. Dynamisk bindning, använd det faktiska objektet för bindning.
Synonymer
Statisk bindning kallas även tidig bindning. Dynamisk bindning kallas även sen bindning.
Utförande
Utförandehastigheten är hög vid statisk bindning. Utförandehastigheten är låg vid dynamisk bindning.
Exempel
Statisk bindning används vid metodöverbelastning. Dynamisk bindning används vid metodöverstyrning.

Sammanfattning – Statisk bindning vs dynamisk bindning

Det finns en koppling mellan ett metodanrop och metoddefinition. Det är känt som bindande. Det finns två typer av bindningar som kallas statisk bindning och dynamisk bindning. Skillnaden mellan statisk bindning och dynamisk bindning är att vid statisk bindning löses bindningen vid kompileringstiden medan dynamisk bindning löses vid körningstiden, vilket är den faktiska tiden för exekvering. Eftersom den nödvändiga informationen tillhandahålls före körning är statisk bindning snabb i exekvering jämfört med dynamisk bindning.

Ladda ned PDF-filen för Static Binding vs Dynamic Binding

Du kan ladda ner PDF-versionen av den här artikeln och använda den för offlineändamål enligt citat. Ladda ner PDF-versionen här: Difference Between Static Binding och Dynamic Binding

Rekommenderad: