Verschil tussen statische binding en dynamische binding

Inhoudsopgave:

Verschil tussen statische binding en dynamische binding
Verschil tussen statische binding en dynamische binding

Video: Verschil tussen statische binding en dynamische binding

Video: Verschil tussen statische binding en dynamische binding
Video: Java Interview 04 - Static Binding Vs Dynamic Binding 2024, Juli-
Anonim

Belangrijk verschil - Statische binding versus dynamische binding

Programmeertalen zoals Java en C ondersteunen Object Oriented Programming (OOP). Hiermee kunt u software bouwen met objecten. Er zijn veel objecten in een softwaresysteem of een programma. Deze objecten hebben attributen en methoden. Attributen beschrijven de kenmerken. Methoden beschrijven de acties die door het object kunnen worden uitgevoerd. Gegevens worden door objecten doorgegeven met behulp van methoden. De vereiste waarden worden verzonden via methodeaanroepen met parameters. De eigenlijke methode-implementatie staat in de methodedefinitie. Er is een verband tussen een methodeaanroep en methodedefinitie. Het staat bekend als bindend. Er zijn twee soorten bindingen. Ze zijn statische binding en dynamische binding. Het belangrijkste verschil tussen statische binding en dynamische binding is dat bij statische binding de binding wordt opgelost tijdens het compileren, terwijl dynamische binding tijdens runtime wordt opgelost, wat het werkelijke tijdstip van uitvoering is. Dit artikel bespreekt het verschil tussen deze twee bindingsmechanismen.

Wat is statische binding?

Binding is de link tussen een methodeaanroep en methodedefinities.

Verschil tussen statische binding en dynamische binding
Verschil tussen statische binding en dynamische binding

Figuur 01: Statische binding en dynamische binding

Verwijs naar het onderstaande programma geschreven in Java.

publieke klasse A{

public void method1(){

Systeem.uit.println(“Methode1”);

}

public void method2(){

Systeem.uit.println(“Methode2”);

}

public static void main(String args){

A obj=nieuwe A();

obj.methode1();

obj.method2();

}

}

Volgens het bovenstaande programma wordt een object van het type A gemaakt. Vervolgens worden methode1 en methode2 aangeroepen. Het identificeren van welke methode moet worden uitgevoerd, staat bekend als binding. Statement obj.method1() roept method1() aan en obj.method2() roept method2() aan. Deze link is bindend.

Bij statische binding wordt de binding tijdens het compileren opgelost door de compiler. Het is ook bekend als vroege binding. Binding vindt plaats voordat een programma daadwerkelijk wordt uitgevoerd. Statische binding treedt op bij overbelasting van de methode. Raadpleeg het onderstaande programma geschreven in Java.

public void Berekening{

public void sum(int x, int y){

System.out.println(“Som is“, x+y);

}

public void sum(double x, double y){

System.out.println(“Som is“, x+y);

}

public static void main(String args){

Berekening cal=nieuwe Berekening();

cal.sum(2, 3);

cal.sum(5.1, 6.4);

}

}

Volgens het bovenstaande programma zal bij het doorgeven van de twee gehele getallen de methode met twee gehele getallen worden aangeroepen. Bij het doorgeven van twee dubbele waarden wordt de methode aangeroepen die overeenkomt met twee dubbele waarden. Dit bindingsproces vindt plaats op het moment van compilatie. De compiler weet dat hij de sum-methode moet aanroepen met twee gehele waarden voor cal.sum(2, 3). Voor cal(5.1, 6.4), zal het de sommethode aanroepen met twee dubbele waarden. Alle vereiste informatie is vóór runtime bekend, dus het verhoogt de programma-efficiëntie en uitvoeringssnelheid.

Wat is dynamische binding?

In Dynamic Binding lost de compiler de binding niet op tijdens het compileren. Binding vindt plaats tijdens runtime. Het wordt ook wel late binding genoemd. Dynamic Binding vindt plaats bij het overschrijven van methoden. Raadpleeg het programma geschreven in Java.

public class Shape(){

public void draw(){

System.out.println(“Teken vorm”);

}

}

public class Circle() breidt Shape uit{

public void draw(){

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

}

}

public class Triangle() breidt Shape uit{

public void draw(){

System.out.println(“Driehoek tekenen”);

}

}

publieke klas Test{

public static void main(String args){

Vorm s;

s=nieuwe vorm();

s.draw();

s=nieuwe cirkel();

s.draw();

s=nieuwe Driehoek();

s.draw();

}

}

Volgens het bovenstaande programma heeft de klasse Shape een methode draw(). Class Circle en class Triangle breiden de Shape-klasse uit. Class Circle en class Triangle kunnen de attributen en methoden van class Shape erven. Daarom is klasse Shape de superklasse of bovenliggende klasse. Class Circle en Class Triangle zijn subklassen of afgeleide klassen. Deze klassen hebben ook de methode draw() met hun eigen implementaties. Daarom wordt de methode draw() in de superklasse overschreven.

In de hoofdmethode worden verschillende objecten aangeroepen. Er is een referentievariabele van het type Shape, namelijk s. Vervolgens roept s de methode aan volgens de specifieke klasse. Tijdens het compileren verwijst de compiler alleen naar de superklasse-tekenmethode. Wanneer de daadwerkelijke uitvoering begint, zal dit leiden tot de uitvoering van verschillende tekenmethoden. Eerst wijst s naar het object van het type Vorm. Daarom zal het de tekenmethode in de Shape-klasse aanroepen. Dan wijzen de s naar het object van het type Circle en wordt de tekenmethode van de klasse Circle aangeroepen. Ten slotte verwijst s naar het object van het type Triangle en roept het de tekenmethode op in de klasse Triangle. Hoewel de referentievariabele van het type Shape is, hangt de binding af van het objecttype. Dit concept staat bekend als Dynamic Binding. De informatie wordt tijdens runtime verstrekt, dus de uitvoeringssnelheid is langzamer in vergelijking met statische binding.

Wat is de overeenkomst tussen statische binding en dynamische binding?

Beide zijn gerelateerd aan een polymorfisme waardoor een object zich op meerdere manieren kan gedragen

Wat is het verschil tussen statische binding en dynamische binding?

Statische binding versus dynamische binding

Statische binding is het type binding dat alle vereiste informatie verzamelt om een functie aan te roepen tijdens het compileren. Dynamic Binding is het type binding dat alle vereiste informatie verzamelt om een functie aan te roepen tijdens runtime.
Tijdstip van binding
Statische binding vindt plaats tijdens het compileren. Dynamische binding vindt plaats tijdens runtime.
Functionaliteit
Static Binding gebruikt type-informatie voor binding. Dynamic Binding gebruikt objecten om te binden.
Werkelijk object
Statische binding gebruikt geen echt object voor binding. Dynamische binding, gebruik het eigenlijke object voor binding.
Synoniemen
Statische binding is ook bekend als vroege binding. Dynamische binding is ook bekend als late binding.
Uitvoering
De uitvoeringssnelheid is snel bij statische binding. De uitvoeringssnelheid is laag bij dynamische binding.
Voorbeeld
Statische binding wordt gebruikt bij overbelasting van de methode. Dynamische binding wordt gebruikt bij het overschrijven van methoden.

Samenvatting – Statische binding versus dynamische binding

Er is een verband tussen een methodeaanroep en methodedefinitie. Het staat bekend als bindend. Er zijn twee soorten bindingen die statische binding en dynamische binding worden genoemd. Het verschil tussen statische binding en dynamische binding is dat bij statische binding de binding wordt opgelost tijdens het compileren, terwijl dynamische binding tijdens runtime wordt opgelost, wat het werkelijke tijdstip van uitvoering is. Omdat de vereiste informatie vóór runtime wordt verstrekt, is statische binding snel in uitvoering in vergelijking met dynamische binding.

Download de PDF van Statische Binding vs Dynamische Binding

U kunt de PDF-versie van dit artikel downloaden en gebruiken voor offline doeleinden volgens de citatienota. Download de PDF-versie hier: Verschil tussen statische binding en dynamische binding

Aanbevolen: