U ovom ćete članku naučiti o sva 4 modifikatora vidljivosti u Kotlinu i kako oni rade u različitim scenarijima.
Modifikatori vidljivosti su ključne riječi koje postavljaju vidljivost (pristupačnost) klasa, objekata, sučelja, konstruktora, funkcija, svojstava i njihovih postavljača. (Ne možete postaviti modifikator vidljivosti getera jer oni uvijek imaju istu vidljivost kao i svojstvo.)
U Kotlin klasa i objekata članku, saznao modifikatora vidljivosti public
i private
ukratko. Saznat ćete o još dva modifikatora vidljivosti protected
i internal
(kao i public
i private
) u pojedinostima.
Modifikatori vidljivosti unutar paketa
Paket organizira skup povezanih funkcija, svojstava i klasa, objekata i sučelja. Preporučena literatura: Kotlin paketi
Modifikator | Opis |
---|---|
javnost | deklaracije su vidljive posvuda |
privatni | vidljivo unutar datoteke koja sadrži deklaraciju |
unutarnja | vidljiv unutar istog modula (skup Kotlin datoteka sastavljenih zajedno) |
zaštićen | nije dostupno za pakete (koristi se za podrazrede) |
Napomena: Ako modifikator vidljivosti nije naveden, on je public
prema zadanim postavkama.
Uzmimo primjer:
// naziv datoteke: hello.kt paket test fun fun1 () () // prema zadanim postavkama javni i vidljiv svugdje private fun function2 () () // vidljiv unutar hello.kt interne zabavne funkcije3 () () // vidljiv unutar isti modul var name = "Foo" // vidljiv svugdje get () = polje // vidljivo iznutra hello.kt (isto kao i njegovo svojstvo) private set (value) (// visible inside hello.kt field = value) private class class1 () // vidljivo iznutra hello.kt
Modifikatori vidljivosti unutar klasa i sučelja
Evo kako modifikatori vidljivosti rade za članove (funkcije, svojstva) deklarirane unutar klase:
Modifikator | Opis |
---|---|
javnost | vidljiv svakom klijentu koji može vidjeti klasu prijavljivanja |
privatni | vidljiv samo unutar predavanja |
zaštićen | vidljiv unutar klase i njezinih podrazreda |
unutarnja | vidljiv svakom klijentu unutar modula koji može vidjeti klasu prijavljivanja |
Napomena: Ako nadjačate protected
člana u izvedenoj klasi bez navođenja njegove vidljivosti, njegova će vidljivost također biti protected
.
Uzmimo primjer:
otvorena klasa Base () (var a = 1 // javno prema zadanim postavkama privatno var b = 2 // privatno prema osnovnoj klasi zaštićeno otvoreno val c = 3 // vidljivo za bazu i izvedenu klasu interni val d = 4 // vidljivo unutar istog modula zaštićena zabava e () () // vidljiva za klasu Base i izvedena klasa) Izvedeno: Base () (// vidljivi su a, c, d i e () osnovne klase // b nije vidljivo nadjačavanje val c = 9 // c je zaštićeno) fun main (args: Array) (val base = Base () // base.a i base.d su vidljivi // base.b, base.c i base .e () nisu vidljivi val izvedeno = Izvedeno () // izvedeno.c nije vidljivo)
Promjena vidljivosti konstruktora
Prema zadanim postavkama, vidljivost konstruktora je public
. Međutim, možete ga promijeniti. Za to morate izričito dodati constructor
ključnu riječ.
Konstruktor je public
prema zadanim postavkama u donjem primjeru:
test klase (val a: Int) (// kod)
Evo kako možete promijeniti njegovu vidljivost.
klasa Test privatni konstruktor (val a: Int) (// kod)
Ovdje je konstruktor private
.
Napomena: U Kotlinu lokalne funkcije, varijable i klase ne mogu imati modifikatore vidljivosti.