V tomto článku sa dozviete o všetkých 4 modifikátoroch viditeľnosti v Kotline a o tom, ako fungujú v rôznych scenároch.
Modifikátory viditeľnosti sú kľúčové slová, ktoré nastavujú viditeľnosť (prístupnosť) tried, objektov, rozhraní, konštruktorov, funkcií, vlastností a ich nastavovacích prvkov. (Nemôžete nastaviť modifikátor viditeľnosti getrov, pretože vždy majú rovnakú viditeľnosť ako vlastnosť objektu.)
V Kotlin triedy a objekty článku ste sa dozvedeli o modifikátory viditeľnosti public
a private
v stručnosti. Dozviete sa o ďalších dvoch modifikátoroch viditeľnosti protected
a internal
(rovnako ako public
a private
) podrobne.
Modifikátory viditeľnosti vo vnútri balenia
Balík organizuje množinu súvisiacich funkcií, vlastností a tried, objektov a rozhraní. Odporúčame prečítať: Balíky Kotlin
Modifikátor | Popis |
---|---|
verejné | vyhlásenia sú viditeľné všade |
súkromné | viditeľné vo vnútri súboru obsahujúceho vyhlásenie |
interné | viditeľné vo vnútri toho istého modulu (súbor súborov Kotlin zostavený dohromady) |
chránené | nie je k dispozícii pre balíčky (používa sa pre podtriedy) |
Poznámka: Ak nie je zadaný modifikátor viditeľnosti, je public
to predvolene.
Uveďme si príklad:
// názov súboru: hello.kt balík test fun fun1 () () // štandardne verejné a viditeľné všade súkromná fun2 () () // viditeľné vo vnútri hello.kt interná fun3 () () // viditeľné vo vnútri rovnaký modul var name = "Foo" // viditeľné všade get () = pole // viditeľné vo vnútri hello.kt (rovnaké ako jeho vlastnosť) súkromná sada (hodnota) (// viditeľné vo vnútri hello.kt pole = hodnota) súkromná trieda class1 () // viditeľné vo vnútri hello.kt
Modifikátory viditeľnosti vo vnútri tried a rozhraní
Takto fungujú modifikátory viditeľnosti pre členov (funkcie, vlastnosti) deklarovaných vo vnútri triedy:
Modifikátor | Popis |
---|---|
verejné | viditeľné pre všetkých klientov, ktorí môžu vidieť deklaračnú triedu |
súkromné | viditeľné iba vo vnútri triedy |
chránené | viditeľné vo vnútri triedy a jej podtried |
interné | viditeľné pre každého klienta v rámci modulu, ktorý vidí deklaračnú triedu |
Poznámka: Ak prepíšete protected
člena v odvodenej triede bez určenia jeho viditeľnosti, bude tiež viditeľný protected
.
Uveďme si príklad:
otvorená trieda Base () (var a = 1 // verejné predvolene súkromné var b = 2 // súkromné pre základnú triedu chránené otvorené val c = 3 // viditeľné pre Base a odvodenú triedu vnútorná hodnota d = 4 // viditeľné vo vnútri toho istého modulu chránená zábava trieda e () () // viditeľná pre triedu Base a Derived) Derived: Base () (// a, c, d a e () triedy Base sú viditeľné // b nie je viditeľné prepísať val c = 9 // c je chránený) fun main (args: Array) (val base = Base () // base.a a base.d sú viditeľné // base.b, base.c a base .e () nie sú viditeľné val odvodené = odvodené () // odvodené.c nie je viditeľné)
Zmena viditeľnosti konštruktéra
Štandardne je viditeľnosť konštruktora public
. Môžete to však zmeniť. K tomu musíte výslovne pridať constructor
kľúčové slovo.
Konštruktor je public
predvolene uvedený v príklade nižšie:
test triedy (hodnota a: Int) (// kód)
Tu môžete zmeniť jeho viditeľnosť.
trieda Test súkromného konštruktora (val a: Int) (// kód)
Tu je konštruktér private
.
Poznámka: V Kotline nemôžu mať miestne funkcie, premenné a triedy modifikátory viditeľnosti.