Модифікатори видимості Котліна

У цій статті ви дізнаєтесь про всі 4 модифікатори видимості в Котліні та про те, як вони працюють у різних сценаріях.

Модифікатори видимості - це ключові слова, які встановлюють видимість (доступність) класів, об’єктів, інтерфейсу, конструкторів, функцій, властивостей та їх установників. (Ви не можете встановити модифікатор видимості геттерів, оскільки вони завжди мають ту саму видимість, що і властивість.)

У Котлин класу і об'єкти статті ви дізналися про модифікаторів видимості publicі privateкоротко. Ви дізнаєтесь ще про два модифікатори видимості protectedта internal(а також publicта private) докладно.

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

Пакет організовує набір пов’язаних функцій, властивостей та класів, об’єктів та інтерфейсів. Рекомендуємо прочитати: Пакети Kotlin

Модифікатор Опис
громадськості декларації видно скрізь
приватний видно всередині файлу, що містить декларацію
внутрішній видно всередині того самого модуля (набір файлів Kotlin, скомпільованих разом)
захищений недоступний для пакетів (використовується для підкласів)

Примітка: Якщо модифікатор видимості не вказаний, це publicза замовчуванням.

Візьмемо приклад:

 // ім'я файлу: тест пакета hello.kt fun fun1 () () // загальнодоступний і видимий скрізь private fun function2 () () // видимий всередині hello.kt внутрішній fun fun3 () () // видимий всередині той самий модуль var name = "Foo" // всюди видно get () = поле // видно всередині hello.kt (те саме, що і його властивість) приватний набір (значення) (// видно всередині hello.kt поле = значення) приватний клас class1 () // видно всередині hello.kt

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

Ось як працюють модифікатори видимості для членів (функцій, властивостей), оголошених всередині класу:

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

Примітка: Якщо ви перевизначаєте protectedчлен у похідному класі, не вказуючи його видимість, його видимість також буде protected.

Візьмемо приклад:

 відкритий клас Base () (var a = 1 // відкритий за замовчуванням private var b = 2 // приватний для базового класу захищений відкритий val c = 3 // видимий для базового та похідного класу внутрішній val d = 4 // видимий всередині того самого модуля захищений fun 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 = Похідне () // похідне.c не видно) 

Зміна видимості конструктора

За замовчуванням видимість конструктора становить public. Однак ви можете його змінити. Для цього вам потрібно явно додати constructorключове слово.

Конструктор є publicтиповим у прикладі нижче:

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

Ось як ви можете змінити його видимість.

 class Тест приватного конструктора (val a: Int) (// код)

Ось конструктор private.

Примітка: У Kotlin локальні функції, змінні та класи не можуть мати модифікаторів видимості.

Цікаві статті...