Lecture overview -- Keyboard shortcut: 'u'  Previous page: Polymorfi og typesammenlignelighed -- Keyboard shortcut: 'p'  Next page: Statisk og dynamisk binding i Java -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Play sound for this page -- Keyboard shortcut: 'y'  Page 29 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Nedarvning
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

Polymorfi er en forudsætning for dynamisk binding

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

Dynamisk binding: Den dynamiske type af x er bestemmende for bindingen af op

Statisk binding: Den statiske type af x er bestemmende for bindingen af op

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

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/StaticDynamicBinding.javaEt tilsvarende Java program.

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.