|
|
Statisk og dynamisk binding | Dynamisk binding er en attraktiv og meget nyttig egenskab ved en objekt-orienteret programudførelse. Vi lader her op til til sondringen mellem statisk og dynamisk binding ved at studere to klasser, samt referencer til instanser af disse |
|
![]() | I denne scene, hvor B igen arver fra A, ser vi en operation op som er redefineret i B. Til venstre arrangerer vi os sådan, at variablen x med statisk type A får dynamisk type B. Spørgsmålet er om x.op(...) referer til op i A eller op i B |
| Når vi anvender dynamisk binding er det objektets type der afgør hvilken metode vi aktiverer Når vi anvender statisk binding er det den statiske type den variabel, hvorigennem vi tilgår objektet der bestemmer metoden, som aktiveres |
| Et tilsvarende Java program.
Programmet illustrerer samme situation i Java, som skitseret generelt ovenfor |
Hvis der anvendes statisk binding, kaldes op fra klassen A i
X.op(...). Omvendt, hvis der anvendes dynamisk binding, kaldes op fra
den specialiserede klasse B i X.op(...). I sprog med statiske typer (i programteksten) er det vigtigt, at anvendelse af dynamisk binding ikke svækker typesikkerheden. Sproget må derfor gennem de sproglige regler sikre, at uanset den dynamiske type af X, findes der en operation op, der kan anvendes. |