Lecture overview -- Keyboard shortcut: 'u'  Previous page: Indre klasser -- Keyboard shortcut: 'p'  Next page: Lokale og anonyme klasser -- 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 32 : 33
Forelæsningsnoter i Objekt-orienteret Programmering
Objekt-orienteret programmering i Java, del 2
Variationer over eksemplet

Inspireret af eksempelt på forrige side ser vi nu på en række variationer. Man kan måske sige at eksemplet udarter lidt. Dog kan man ved at studere detaljerne få styrket sin forståelse af Java's muligheder angående indre klasser.

En instans af en indre klasse kan returneres fra en metode i den ydre klasse

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/mere-java-oop/inner-classes/var-2/Outer.javaKlassen Outer med en offentlig indre klasse Inner.

Klassen Outer med en offentlig indre klasse Inner.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/mere-java-oop/inner-classes/var-2/Application.javaEn klient af Outer.

En klient af Outer. Vi ser at et indre objekt kan returneres fra det ydre objekt via metoden makeInner. Det indre objekt holder fast i det ydre objekt, hvilket afsløres af udskriften 'inner outer'.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/mere-java-oop/inner-classes/var-3/Outer.javaKlassen Outer med en privat indre klasse Inner.

Klassen Outer med en privat indre klasse Inner.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/mere-java-oop/inner-classes/var-3/Application.javaEn klient af Outer.

En klient af Outer. Vi ser igen at et indre objekt kan returneres fra det ydre objekt via metoden makeInner. I klassen Application har vi imidlertid intet kendskab til klassen Inner, i det den er private i Outer. Derfor bliver vi nødt til at erklære i af den generelle klasse Object. På trods af dette får vi samme udskrift som i ovenstående variation: 'inner outer'. Vi vil først forstå dette i detaljer når vi har studeret nedarvning og dynamisk binding.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/mere-java-oop/inner-classes/var-4/Outer.javaKlassen Outer med en offentlig indre klasse Inner.

Klassen Outer med en offentlig indre klasse Inner.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/mere-java-oop/inner-classes/var-4/Application.javaEn klient af Outer som instantierer Inner i et Outer objekt.

En klient af Outer som instantierer Inner i et Outer objekt. I dette eksempel laves Inner objektet uden om fabrikations metoden i Outer. Da Inner klassen er public kan vi instantiere Inner. Læg mærke til syntaksen for dette, og i særdeleshed o objektets rolle i instantieringen. Dette understreger at i skabes i o.