Skip to main content

Wat is dynamische binding?

In de informatica is naambinding de associatie van een identificatie, zoals een functie of variabele naam, met een deel van code of gegevens.In het meest voorkomende scenario, statische binding, is deze mapping bekend op compilatietijd.Bij dynamische binding is het object toegewezen door een functie niet bekend tijdens de compilatietijd en kan alleen worden bepaald tijdens de uitvoeringstijd.Om deze reden wordt dynamische binding ook late binding genoemd.Hoewel dynamische binding flexibiliteit biedt die niet beschikbaar is met statische binding, houdt het ook meer prestatiekosten in dan statische binding.

Dynamische binding is nauw verwant aan polymorfisme, dat deel uitmaakt van objectgeoriënteerde programmering.Polymorfisme maakt het mogelijk om op verschillende manieren op verschillende manieren te worden geïmplementeerd.Als de code niet zodanig is geschreven dat de precieze methode niet kan worden bepaald tijdens de compileertijd, moet dynamische binding worden gebruikt.

Een vormklasse kan bijvoorbeeld een methode hebben die GetArea wordt genoemd, omdat elke vorm een gebied heeft.Een Circle -subklasse van vorm zou Getarea echter anders implementeren dan een vierkante subklasse.Daarom, als een nieuw object wordt gemaakt van type vorm, en als code de methode getarea op die vorm oproept, zal de compiler geen manier hebben om te weten of de vorm een cirkel of een vierkant zal zijn, en daarom zal het niet wetenwelke getarea -methode om te bellen.Dit is een voorbeeld van dynamische binding, omdat de juiste getarea -methode alleen tijdens de runtime wordt toegewezen, nadat het programma weet wat voor soort vorm het object is.

Dynamische binding zorgt voor de flexibiliteit van het gebruik van abstracte methoden zonder te weten welke specifieke implementatie zalworden gebruikt.In het vormvoorbeeld kan de code worden geschreven om dynamische binding te voorkomen door deze logica expliciet te gebruiken: als de vorm een cirkel is, roep dan de methode van de cirkels op;Anders, als de vorm een vierkant is, bel dan de specifieke getarea -methode voor vierkanten.Het voordeel van dynamische binding is dat de code schoner en onderhoudbaarder is dan het alternatief.In het statische bindende voorbeeld is er codeduplicatie en de code moet worden bijgewerkt wanneer een nieuw type vorm wordt toegevoegd.

De nadelen van dynamische binding zijn prestaties en veiligheid.Bij statische binding weet de compiler precies welke code hij moet aanroepen en kan de code optimaliseren om efficiënter uit te voeren.Type veiligheid kan een probleem zijn, omdat in sommige implementaties van dynamische binding een methode kan worden opgeroepen op een object dat de methode niet ondersteunt.De Getarea-methode kan bijvoorbeeld worden opgeroepen op een object dat geen vorm is en daarom geen getarea-methode heeft, wat kan leiden tot een runtime-fout.Statische binding zou dit scenario voorkomen door een compilatiefout te verhogen.