V tem članku boste izvedeli o vseh 4 modifikatorjih vidnosti v Kotlinu in kako delujejo v različnih scenarijih.
Modifikatorji vidnosti so ključne besede, ki določajo vidnost (dostopnost) razredov, predmetov, vmesnika, konstruktorjev, funkcij, lastnosti in njihovih nastaviteljev. (Sprejemnika vidnosti ne morete nastaviti na vidnost, saj imajo vedno enako vidnost kot lastnost.)
V KOTLIN razreda in predmetov članek, ste se naučili o vidljivosti modifikatorji public
in private
na kratko. Boste spoznali še dva vidljivosti modifikatorji protected
in internal
(tudi public
in private
) podrobno.
Modifikatorji vidnosti v paketu
Paket organizira nabor sorodnih funkcij, lastnosti in razredov, predmetov in vmesnikov. Priporočljivo branje: Paketi Kotlin
Modifikator | Opis |
---|---|
javnosti | izjave so vidne povsod |
zasebno | viden v datoteki, ki vsebuje izjavo |
notranje | viden znotraj istega modula (skupek datotek Kotlin, sestavljenih skupaj) |
zaščiten | ni na voljo za pakete (uporablja se za podrazrede) |
Opomba: Če modifikator vidnosti ni določen, je public
privzeto.
Vzemimo primer:
// ime datoteke: hello.kt paket test fun fun1 () () // privzeto javno in vidno povsod private fun function2 () () // vidno znotraj hello.kt interna fun fun3 () () // vidno znotraj isti modul var name = "Foo" // viden povsod get () = polje // vidno znotraj hello.kt (enako kot njegova lastnost) private set (value) (// vidno znotraj hello.kt field = value) private class class1 () // vidno znotraj hello.kt
Modifikatorji vidnosti v razredih in vmesnikih
Evo, kako delujejo modifikatorji vidnosti za člane (funkcije, lastnosti), razglašene znotraj razreda:
Modifikator | Opis |
---|---|
javnosti | viden vsaki stranki, ki lahko vidi razred deklariranja |
zasebno | vidna samo znotraj predavanja |
zaščiten | vidna znotraj razreda in njegovih podrazredov |
notranje | vidna vsakemu odjemalcu znotraj modula, ki lahko vidi razred deklariranja |
Opomba: Če preglasite protected
člana v izvedenem razredu, ne da bi določili njegovo vidnost, bo tudi njegova vidnost protected
.
Vzemimo primer:
odprti razred Base () (var a = 1 // javni privzeto zaseben var b = 2 // zaseben za osnovni razred zaščiten odprti val c = 3 // viden osnovnemu in izpeljanemu razredu notranji val d = 4 // viden znotraj istega modula je zaščitena zabava e () () // vidna razredu Base in izpeljanemu razredu) Izvedeno: Base () (// vidni so a, c, d in e () osnovnega razreda // b ni vidno preglasitev val c = 9 // c je zaščiten) fun main (args: Array) (val base = Base () // base.a in base.d so vidni // base.b, base.c in base .e () niso vidni val izvedeno = Izpeljano () // pridobljeno.c ni vidno)
Spreminjanje vidnosti konstruktorja
Privzeto je vidnost konstruktorja public
. Lahko pa ga spremenite. Za to morate izrecno dodati constructor
ključno besedo.
Konstruktor je public
privzeto v spodnjem primeru:
razred Test (val a: Int) (// koda)
Evo, kako lahko spremenite njegovo vidnost.
class Test private constructor (val a: Int) (// koda)
Tu je konstruktor private
.
Opomba: V Kotlinu lokalne funkcije, spremenljivke in razredi ne morejo imeti modifikatorjev vidnosti.