Lecture overview -- Keyboard shortcut: 'u'  Previous page: Polymorfi og dynamisk binding [Section] -- Keyboard shortcut: 'p'  Next page: Polymorfi og typesammenlignelighed -- 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 27 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Nedarvning
Statiske og dynamiske typer

Vi indfører her et par definitioner på forskellige former for typer af variable og parametre mv.

Den statiske type af en variabel eller parameter er den type, hvoraf variablen eller parameteren er erklæret

Den dynamiske type af en variabel eller parameter er typen af det objekt, variablen eller parameteren refererer til

Den statiske type af en variabel er den type vi finder i variabelerklæringen

Den dynamiske type er typen af det objekt, som variablen eller parameteren peger på via en reference

To klasser A og B, hvor B arver fra A

A x;          // x har statisk type A.
B y;          // y har statisk type B.

x = new A();  // x har dynamisk type A. 
y = new B();  // y har dynamisk type B.
 
x = y;        // x har dynamisk type B. Lovligt?
y = x;        // y har dynamisk type B. Lovligt?
              

Erklæring af to variable x og y samt efterfølgende instantieringer og assignments

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

Et tilsvarende komplet Java program. Programmet illustrerer samme situation som skitseret generelt ovenfor

Skelnen mellem statisk og dynamisk type af en variabel eller parameter er vigtig for at kunne forstå det nært beslægtede emne: statiske kontra dynamisk binding og virtuelle operationer. Vi vender tilbage til dette herunder. Det er også muligt og nyttigt at tale om den statiske hhv. den dynamiske type af et udtryk. Via typeerklæringer af variable, parametre og funktioners resultat kan man udtale sig om et udtryks statiske type. På næste side vil vi definere under hvilke omstændigheder de to assignments herover er lovlige.