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
Klassen Outer med en offentlig indre klasse Inner.
Klassen Outer med en offentlig indre klasse Inner.
En 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'.
Klassen Outer med en privat indre klasse Inner.
Klassen Outer med en privat indre klasse Inner.
En 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.
Klassen Outer med en offentlig indre klasse Inner.
Klassen Outer med en offentlig indre klasse Inner.
En 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.