Verschil tussen statische binding en dynamische binding

Belangrijkste verschil - statisch Binding versus dynamische binding
 

Programmeertalen zoals Java en C # ondersteunen Object Oriented Programming (OOP). Het maakt het bouwen van software met behulp van objecten mogelijk. 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 met behulp van methoden door objecten geleid. De vereiste waarden worden verzonden via methodeaanroepen met parameters. De daadwerkelijke methode-implementatie staat in de methode-definitie. Er is een koppeling tussen een methodeaanroep en een methodedefinitie. Het staat bekend als bindend. Er zijn twee soorten bindingen. Ze zijn statische binding en dynamische binding. De belangrijk verschil tussen statische binding en dynamische binding is dat, bij statische binding wordt de binding opgelost tijdens het compileren, terwijl de dynamische binding wordt opgelost tijdens de uitvoeringstijd, wat het daadwerkelijke tijdstip van uitvoering is. Dit artikel bespreekt het verschil tussen deze twee bindende mechanismen.

INHOUD

1. Overzicht en belangrijkste verschil
2. Wat is statische binding
3. Wat is dynamische binding
4. Overeenkomsten tussen statische binding en dynamische binding
5. Vergelijking zij aan zij - Statische binding versus dynamische binding in tabelvorm
6. Samenvatting

Wat is statische binding?

Binding is de koppeling tussen een methodeaanroep en methodedefinities.

Afbeelding 01: Statische binding en dynamische binding

Raadpleeg het onderstaande programma geschreven in Java.

openbare klasse A

openbare ongeldige methode1 ()

System.out.println ( “Methode 1”);

openbare ongeldige methode2 ()

System.out.println ( “Methode 2”);

public static void main (String [] args)

Een obj = nieuwe A ();

obj.method1 ();

obj.method2 ();

Volgens het bovenstaande programma wordt een object van type A gemaakt. Vervolgens worden methode1 en methode2 genoemd. Het identificeren van welke methode moet worden uitgevoerd, is bekend als bindend. Verklaring obj.method1 () zal methode1 () aanroepen en obj.method2 () zal methode2 () aanroepen. Deze link is bindend.

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

public void Calculation

public void sum (int x, int y)

System.out.println ("Sum is", x + y);

openbare ongeldige som (dubbele x, dubbele y)

System.out.println ("Sum is", x + y);

public static void main (String [] args)

Cal berekening = nieuwe berekening ();

cal.sum (2,3);

cal.sum (5.1, 6.4);

Volgens het bovenstaande programma zal bij het passeren van de twee gehele getallen de methode met twee gehele getallen worden aangeroepen. Als u twee dubbele waarden doorgeeft, wordt de methode die overeenkomt met twee dubbele waarden aangeroepen. Dit bindproces vindt plaats op het moment van compilatie. De compiler weet dat dit sum-methode moet noemen met twee gehele getallen voor cal.sum (2,3). Voor cal (5.1.6.4) wordt de sommethode met twee dubbele waarden aangeroepen. Alle vereiste informatie is vóór runtime bekend, dus dit verhoogt de efficiëntie en de uitvoeringssnelheid van het programma.

Wat is dynamische binding?

In Dynamic Binding lost de compiler de binding niet op tijdens het compileren. Binding vindt plaats tijdens runtime. Het is ook bekend als late binding. Dynamische binding vindt plaats bij het overschrijven van de methode. Raadpleeg het programma geschreven in Java.

public class Shape ()

openbare ongeldige trekking ()

System.out.println ("Vorm tekenen");

public class Circle () breidt Shape uit

openbare ongeldige trekking ()

System.out.println ("Teken cirkel");

public class Triangle () breidt Shape uit

openbare ongeldige trekking ()

System.out.println ("driehoek tekenen");

public class 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 klasse Shape een methode draw (). Class Circle en Class Triangle breiden Shape-klasse uit. Class Circle en Class Triangle kunnen de attributen en methoden van klasse Shape erven. Daarom is klasse Shape de superklasse of ouderklasse. Class Circle en Class Triangle zijn subklassen of afgeleide klassen. Deze klassen hebben ook de methode draw () met hun eigen implementaties. Daarom is de methode draw () in de superklasse onderdrukt.

In de hoofdmethode worden verschillende objecten aangeroepen. Er is een referentievariabele van het Shape-type, dat is s. Dan roept s de methode op volgens de specifieke klasse. Tijdens het compileren verwijst de compiler alleen naar de superklassekeningsmethode. Wanneer de daadwerkelijke uitvoering begint, zal dit leiden tot de uitvoering van verschillende tekenmethoden. Eerst wijst s naar het object van het type Shape. Daarom wordt de tekenmethode in Shape-klasse aangeroepen. Dan zullen de s het object van het type Circle wijzen en het zal de tekenmethode van de Circle-klasse aanroepen. Ten slotte verwijst s naar het object van het type Driehoek en wordt de tekenmethode in de Triangle-klasse aangeroepen. 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 snelheid van uitvoering 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 te noemen tijdens het compileren. Dynamic Binding is het type binding dat alle vereiste informatie verzamelt om een ​​functie tijdens runtime aan te roepen.
 Tijd van binding
Statische binding vindt plaats tijdens het compileren. Dynamische binding vindt plaats tijdens runtime.
functionaliteit
Statische binding gebruikt type-informatie voor binding. Dynamische binding gebruikt objecten die moeten worden omgezet om te binden.
 Werkelijke object
Statische binding gebruikt geen daadwerkelijk object om te binden. Dynamische binding, gebruik het eigenlijke object om te binden.
Synoniemen
Statische binding is ook bekend als vroege binding. Dynamische binding is ook bekend als late binding.
Uitvoering
De uitvoeringssnelheid is snel in statische binding. De uitvoeringssnelheid is laag in dynamische binding.
Voorbeeld
Statische binding wordt gebruikt bij overbelasting van de methode. Dynamische binding wordt gebruikt bij het overschrijven van methoden.

Samenvatting - Statisch Binding versus dynamische binding 

Er is een koppeling tussen een methodeaanroep en een 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 binding van statische binding de binding op de compileertijd wordt opgelost, terwijl de dynamische binding tijdens de uitvoeringstijd wordt opgelost, wat het daadwerkelijke tijdstip van uitvoering is. Omdat de vereiste informatie wordt verstrekt vóór de uitvoering, is statische binding snel in uitvoering in vergelijking met dynamische binding.

Download de PDF van Static Binding vs Dynamic Binding

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

Referentie:

1.Java Interview 04 - Statische binding versus Dynamic Binding, Mahika Tutorials, 27 december 2017. Beschikbaar Hier