Kotlin pesitsenud ja siseklass

Selles artiklis õpite näidete abil töötama sisestatud ja siseklassidega.

Kotlini pesastatud klass

Sarnaselt Java-ga võimaldab Kotlin määratleda klassi teises klassis, mida nimetatakse pesastatud klassiks.

 klass Väline (… klass Pesastatud (…))

Kuna Nested-klass on selle lisaklassi Outer liige, saate klassi ja selle liikmete .juurde pääsemiseks kasutada noode Nested.

Näide: Kotlini pesastatud klass

 class Outer ( val a = "Outside Nested class." class Nested ( val b = "Inside Nested class." fun callMe() = "Function call from inside Nested class." ) ) fun main(args: Array) ( // accessing member of Nested class println(Outer.Nested().b) // creating object of Nested class val nested = Outer.Nested() println(nested.callMe()) )

Programmi käivitamisel on väljund järgmine:

Pesaklassi sees. Funktsioonikõne pesastatud klassi seest.

Java kasutajatele

Kotlini pesastatud klass sarnaneb Java staatilise pesastatud klassiga.

Kui kuulutate klassis teise klassi sees, saab Java-s vaikimisi siseklass. Kuid Kotlinis peate siseklassi loomiseks kasutama sisemist modifikaatorit, mida arutame järgmisena.

Kotlini siseklass

Kotlini pesastatud klassidel pole juurdepääsu välisele klassieksemplarile. Näiteks,

 class Outer ( val foo = "Outside Nested class." class Nested ( // Error! cannot access member of outer class. fun callMe() = foo ) ) fun main(args: Array) ( val outer = Outer() println(outer.Nested().callMe()) )

Ülaltoodud koodi ei kompileerita, sest proovisime pääseda klassi Outer foo atribuudile Nested klassi seest.

Selle probleemi lahendamiseks peate siseklassi loomiseks märkima pesastatud klassi sisemisega. Sisemistel klassidel on viide välimisele klassile ja nad saavad juurdepääsu välisklassi liikmetele.

Näide: Kotlini siseklass

 class Outer ( val a = "Outside Nested class." inner class Inner ( fun callMe() = a ) ) fun main(args: Array) ( val outer = Outer() println("Using outer object: $(outer.Inner().callMe())") val inner = Outer().Inner() println("Using inner object: $(inner.callMe())") )

Programmi käivitamisel on väljund järgmine:

Välise objekti kasutamine: väljaspool pesastatud klassi. Sisemise objekti kasutamine: väljaspool pesa klassi.

Soovitatav kirjand: anonüümne siseklass

Huvitavad Artiklid...