Шаг 147.
Основы Kotlin.
Объявление классов. Ограничение видимости рамками пакета

    На этом шаге мы рассмотрим вопросы, связанные с видимостью.

    Вспомните начало этого раздела, где обсуждались области видимости private и public. Как вы уже знаете, в языке Kotlin классы, функции или свойства по умолчанию (без модификатора видимости) получают общедоступную область видимости. Это значит, что ими могут пользоваться любые другие классы, функции или свойства в проекте.

    Если вы уже знакомы с Java, то могли заметить, что уровень доступа по умолчанию отличается от Kotlin: по умолчанию в Java назначается уровень видимости, ограниченный рамками пакета, то есть методы, поля и классы без модификатора видимости могут использоваться только классами из того же пакета. Kotlin отказался от этого подхода, потому что от него мало пользы. На практике это ограничение легко обойти, создав соответствующий пакет и скопировав класс туда. С другой стороны, Kotlin обеспечивает то, чего нет в Java, - внутренний уровень видимости internal. Функции, классы или свойства с этим уровнем видимости доступны для других функций, классов и свойств внутри того же модуля. Модуль - это отдельная функциональная единица, которая может выполняться, тестироваться и отлаживаться независимо.

    Модули включают: исходный код, сценарии сборки, модульные тесты, дескрипторы развертывания и т. д. NyetHack - это один модуль внутри вашего проекта, а проект IntelliJ может вмещать несколько модулей. Модули могут зависеть от исходных файлов и ресурсов других модулей.

    Уровень видимости internal помогает организовать совместный доступ к классам внутри модуля и сделать их недоступными из других модулей. Поэтому internal - это хороший выбор для создания библиотек на языке Kotlin.

    Со следующего шага мы начнем рассматривать вопросы, связанные с инициализацией.




Предыдущий шаг Содержание Следующий шаг