Šajā rakstā jūs uzzināsiet par visiem 4 redzamības modifikatoriem Kotlīnā un to darbību dažādos scenārijos.
Redzamības modifikatori ir atslēgvārdi, kas nosaka klašu, objektu, saskarnes, konstruktoru, funkciju, īpašību un to iestatītāju redzamību (pieejamību). (Jūs nevarat iestatīt getteru redzamības modifikatoru, jo tiem vienmēr ir tāda pati redzamība kā īpašumam.)
Jo Kotlin klases un objektiem rakstā jūs uzzinājāt par redzamību modifikatoru public
un private
īsumā. Jūs uzzināsiet vēl par diviem redzamības modifikatoriem protected
un internal
(kā arī public
un private
) detalizēti.
Redzamības modifikatori iepakojuma iekšpusē
Pakete organizē saistīto funkciju, rekvizītu un klašu, objektu un saskarņu kopumu. Ieteicams lasīt: Kotlin Packages
Pārveidotājs | Apraksts |
---|---|
publiski | deklarācijas ir redzamas visur |
Privāts | redzams failā, kurā ir deklarācija |
iekšējs | redzams tajā pašā modulī (Kotlin failu kopa, kas sastādīta kopā) |
aizsargāts | nav pieejams paketēm (izmanto apakšklasēs) |
Piezīme: Ja redzamības modifikators nav norādīts, tas ir public
pēc noklusējuma.
Ņemsim piemēru:
// faila nosaukums: hello.kt pakotnes jautrības funkcija1 () () // pēc noklusējuma publiska un visur redzama privātās izklaides funkcija2 () () // redzama iekšpusē hello.kt iekšējā jautrības funkcija3 () () // redzama iekšpusē tas pats modulis var name = "Foo" // visur redzams get () = lauks // redzams iekš hello.kt (tāds pats kā tā īpašums) privātā kopa (vērtība) (// redzama iekš hello.kt lauks = vērtība) privātā klase1 () // redzams iekšā sveiki.kt
Redzamības modifikatori klasēs un saskarnēs
Lūk, kā redzamības modifikatori darbojas klases dalībniekiem (funkcijām, īpašībām):
Pārveidotājs | Apraksts |
---|---|
publiski | redzams ikvienam klientam, kurš var redzēt deklarēšanas klasi |
Privāts | redzams tikai klases iekšienē |
aizsargāts | redzams klases un tās apakšklases iekšpusē |
iekšējs | redzams jebkuram klientam moduļa iekšienē, kurš var redzēt deklarēšanas klasi |
Piezīme: Ja jūs ignorējat protected
atvasinātās klases dalībnieku, nenorādot tā redzamību, tā redzamība arī būs protected
.
Ņemsim piemēru:
atvērtās klases bāze () (var a = 1 // publiski pēc noklusējuma privāts var b = 2 // privāts līdz Bāzes klasei aizsargāts atvērtais val c = 3 // redzams bāzei un atvasinātās klases iekšējais val d = 4 // redzams tā paša moduļa iekšpusē aizsargāta fun e () () // redzama Bāzei un Derived class) klase Derived: ir redzama Base klases Base () (// a, c, d un e () // b nav redzams ignorēt val c = 9 // c ir aizsargāts) fun main (args: Array) (val base = Base () // base.a un base.d ir redzami // base.b, base.c un base .e () nav redzami, atvasināti = atvasināti () // atvasināti. c nav redzami)
Konstruktora redzamības maiņa
Pēc noklusējuma konstruktora redzamība ir public
. Tomēr jūs to varat mainīt. Lai to izdarītu, jums skaidri jāpievieno constructor
atslēgvārds.
Konstruktors public
pēc noklusējuma ir zemāk esošajā piemērā:
klases pārbaude (val a: Int) (// kods)
Lūk, kā jūs varat mainīt tā redzamību.
klase Pārbaudīt privāto konstruktoru (val a: Int) (// kods)
Šeit ir konstruktors private
.
Piezīme: Kotlinā vietējām funkcijām, mainīgajiem un klasēm nevar būt redzamības modifikatori.