Modifikátory viditelnosti Kotlin

V tomto článku se dozvíte o všech 4 modifikátorech viditelnosti v Kotlin a o tom, jak fungují v různých scénářích.

Modifikátory viditelnosti jsou klíčová slova, která nastavují viditelnost (přístupnost) tříd, objektů, rozhraní, konstruktorů, funkcí, vlastností a jejich nastavovačů. (Nelze nastavit modifikátor viditelnosti getrů, protože vždy mají stejnou viditelnost jako vlastnost.)

V Kotlin třídy a objekty článku jste se dozvěděli o modifikátory viditelnosti publica privateve stručnosti. Dozvíte se o dalších dvou modifikátorech viditelnosti protecteda internal(stejně jako publica private) podrobně.

Modifikátory viditelnosti uvnitř balíčku

Balíček organizuje sadu souvisejících funkcí, vlastností a tříd, objektů a rozhraní. Doporučené čtení: Kotlin Packages

Modifikátor Popis
veřejnost prohlášení jsou viditelná všude
soukromé viditelné uvnitř souboru obsahujícího prohlášení
vnitřní viditelné uvnitř stejného modulu (sada souborů Kotlin sestavená společně)
chráněný není k dispozici pro balíčky (používá se pro podtřídy)

Poznámka: Pokud není zadán modifikátor viditelnosti, je publicve výchozím nastavení.

Vezměme si příklad:

 // název souboru: hello.kt balíček test fun fun1 () () // ve výchozím nastavení veřejné a viditelné všude soukromá fun function2 () () // viditelné uvnitř hello.kt interní fun funkce3 () () // viditelné uvnitř stejný modul var name = "Foo" // viditelné všude get () = pole // viditelné uvnitř hello.kt (stejné jako jeho vlastnost) soukromá sada (hodnota) (// viditelné uvnitř hello.kt pole = hodnota) soukromá třída třída1 () // viditelné uvnitř hello.kt

Modifikátory viditelnosti uvnitř tříd a rozhraní

Takto fungují modifikátory viditelnosti pro členy (funkce, vlastnosti) deklarované uvnitř třídy:

Modifikátor Popis
veřejnost viditelné pro každého klienta, který může vidět deklarační třídu
soukromé viditelné pouze uvnitř třídy
chráněný viditelné uvnitř třídy a jejích podtříd
vnitřní viditelné pro libovolného klienta uvnitř modulu, který může vidět deklarující třídu

Poznámka: Pokud přepíšete protectedčlena v odvozené třídě bez určení jeho viditelnosti, jeho viditelnost bude také protected.

Vezměme si příklad:

 open class Base () (var a = 1 // public by default private var b = 2 // private to Base class protected open val c = 3 // visible to the Base and the Derived class internal val d = 4 // visible uvnitř stejného modulu chráněné fun e () () // viditelné pro třídu Base a odvozenou třídu Derived: Base () (// a, c, d a e () třídy Base jsou viditelné // b není viditelné přepsat val c = 9 // c je chráněn) fun main (args: Array) (val base = Base () // base.a a base.d jsou viditelné // base.b, base.c a base .e () nejsou viditelné val odvozeno = Derived () // derived.c není viditelné) 

Změna viditelnosti konstruktéra

Ve výchozím nastavení je viditelnost konstruktoru public. Můžete to však změnit. K tomu musíte explicitně přidat constructorklíčové slovo.

Konstruktor je publicve výchozím nastavení v příkladu níže:

 test třídy (hodnota a: Int) (// kód) 

Zde můžete změnit jeho viditelnost.

 třída Test soukromého konstruktoru (val a: Int) (// kód)

Tady je konstruktor private.

Poznámka: V Kotlinu nemohou mít lokální funkce, proměnné a třídy modifikátory viditelnosti.

Zajímavé články...