Modyfikatory widoczności Kotlin

W tym artykule dowiesz się o wszystkich 4 modyfikatorach widoczności w Kotlinie oraz o tym, jak działają w różnych scenariuszach.

Modyfikatory widoczności to słowa kluczowe, które ustawiają widoczność (dostępność) klas, obiektów, interfejsu, konstruktorów, funkcji, właściwości i ich ustawiaczy. (Nie można ustawić modyfikatora widoczności metod pobierających, ponieważ zawsze mają one taką samą widoczność jak właściwość).

W artykule Kotlin Class and Objects dowiedziałeś się o modyfikatorach widoczności publici privatew skrócie. Dowiesz się o dwóch kolejnych modyfikatorach widoczności protectedi internal(a także publici private) szczegółowo.

Modyfikatory widoczności wewnątrz pakietu

Pakiet organizuje zestaw powiązanych funkcji, właściwości i klas, obiektów i interfejsów. Zalecana literatura: Pakiety Kotlin

Modyfikator Opis
publiczny deklaracje są widoczne wszędzie
prywatny widoczne wewnątrz pliku zawierającego deklarację
wewnętrzny widoczne w tym samym module (zestaw plików Kotlin skompilowanych razem)
chroniony niedostępne dla pakietów (używane dla podklas)

Uwaga: Jeśli modyfikator widoczności nie jest określony, jest on publicustawiony domyślnie.

Weźmy przykład:

 // nazwa pliku: hello.kt pakiet test fun function1 () () // domyślnie publiczny i widoczny wszędzie private fun function2 () () // widoczny wewnątrz hello.kt internal fun function3 () () // widoczny wewnątrz ten sam moduł var name = "Foo" // widoczne wszędzie get () = pole // widoczne wewnątrz hello.kt (tak samo jak jego własność) zestaw prywatny (wartość) (// widoczne wewnątrz hello.kt pole = wartość) klasa prywatna klasa1 () // widoczne wewnątrz hello.kt

Modyfikatory widoczności wewnątrz klas i interfejsów

Oto jak działają modyfikatory widoczności dla elementów członkowskich (funkcji, właściwości) zadeklarowanych wewnątrz klasy:

Modyfikator Opis
publiczny widoczne dla każdego klienta, który może zobaczyć deklarowaną klasę
prywatny widoczne tylko w klasie
chroniony widoczne wewnątrz klasy i jej podklas
wewnętrzny widoczne dla każdego klienta wewnątrz modułu, który może zobaczyć deklarującą klasę

Uwaga: Jeśli przesłonisz element protectedczłonkowski w klasie pochodnej bez określania jego widoczności, jego widoczność również będzie protected.

Weźmy przykład:

 open class Base () (var a = 1 // domyślnie public private var b = 2 // private to Base class protected open val c = 3 // widoczne dla bazy i klasy pochodnej wewnętrzne val d = 4 // widoczne wewnątrz tego samego modułu chronione fun e () () // widoczne dla klasy Base i Derived) Derived: Base () (// a, c, d i e () klasy Base są widoczne // b jest niewidoczne override val c = 9 // c jest chronione) fun main (args: Array) (val base = Base () // base.a i base.d są widoczne // base.b, base.c i base .e () nie są widoczne. val derived = Derived () // derived.c nie jest widoczne) 

Zmiana widoczności konstruktora

Domyślnie widoczność konstruktora to public. Możesz to jednak zmienić. W tym celu musisz jawnie dodać constructorsłowo kluczowe.

Konstruktor jest publicdomyślnie w poniższym przykładzie:

 class Test (val a: Int) (// kod) 

Oto, jak możesz zmienić jego widoczność.

 class Test prywatny konstruktor (val a: Int) (// kod)

Oto konstruktor private.

Uwaga: w Kotlinie lokalne funkcje, zmienne i klasy nie mogą mieć modyfikatorów widoczności.

Interesujące artykuły...