Модификатори на видимостта на Kotlin

В тази статия ще научите за всичките 4 модификатора на видимост в Kotlin и как те работят в различни сценарии.

Модификаторите на видимост са ключови думи, които задават видимостта (достъпността) на класове, обекти, интерфейс, конструктори, функции, свойства и техните задатели. (Не можете да зададете модификатор на видимостта на getters, тъй като те винаги имат същата видимост като тази на свойството.)

В Kotlin клас и обекти статия, сте научили за видимост модификатори publicи privateнакратко. Ще научите за още два модификатора на видимостта protectedи internal(както и publicи private) в детайли.

Модификатори на видимостта Вътре в пакета

Пакетът организира набор от свързани функции, свойства и класове, обекти и интерфейси. Препоръчително четиво: Пакети Kotlin

Модификатор Описание
публично декларациите са видими навсякъде
частни видими във файла, съдържащ декларацията
вътрешен видими в същия модул (набор от Kotlin файлове, компилирани заедно)
защитен не се предлага за пакети (използва се за подкласове)

Забележка: Ако модификаторът на видимост не е посочен, той е publicпо подразбиране.

Да вземем пример:

 // име на файл: hello.kt пакет тест fun fun1 () () // публичен по подразбиране и видим навсякъде private fun function2 () () // видим вътре hello.kt вътрешна функция fun3 () () // видим вътре в същият модул var name = "Foo" // видим навсякъде get () = поле // видим вътре hello.kt (същото като неговото свойство) private set (value) (// видим вътре hello.kt field = value) private class class1 () // видимо вътре hello.kt

Модификатори на видимостта вътре в класове и интерфейси

Ето как работят модификаторите на видимост за членове (функции, свойства), декларирани в клас:

Модификатор Описание
публично видим за всеки клиент, който може да види деклариращия клас
частни видими само в класа
защитен видими в класа и неговите подкласове
вътрешен видим за всеки клиент вътре в модула, който може да види класа на деклариране

Забележка: Ако замените protectedчлен в производния клас, без да посочите неговата видимост, неговата видимост също ще бъде protected.

Да вземем пример:

 отворен клас Base () (var a = 1 // публичен по подразбиране private var b = 2 // частен към Base клас защитен отворен val c = 3 // видим за базовия и производния клас вътрешен val d = 4 // видим вътре в същия модул защитено забавление e () () // видимо за класа на Base и Derived) Производно: Base () (// a, c, d и e () на базовия клас са видими // b не се вижда замяна val c = 9 // c е защитен) fun main (args: Array) (val base = Base () // base.a и base.d са видими // base.b, base.c и base .e () не са видими val deriva = Derived () // deriva.c не се вижда) 

Промяна на видимостта на конструктор

По подразбиране видимостта на конструктор е public. Можете обаче да го промените. За това трябва изрично да добавите constructorключова дума.

Конструкторът е publicпо подразбиране в примера по-долу:

 class Test (val a: Int) (// код) 

Ето как можете да промените видимостта му.

 class Тест на частен конструктор (val a: Int) (// код)

Тук е конструкторът private.

Забележка: В Kotlin локалните функции, променливи и класове не могат да имат модификатори на видимостта.

Интересни статии...