Пакеты в Kotlin

В языке программирования Kotlin пакеты представляют собой логический блок, объединяющий функционал. Это могут быть, к примеру, функции и классы, которые используются для решения схожих задач. В результате функции и классы, предназначенные для решения одной задачи, вы сможете поместить в один пакет, для решения другой задачи -- во второй пакет и т. д.

Чтобы определить пакет, используют ключевое слово package, после чего идет имя пакета:

На практике определение пакета помещается в начало файла, в результате чего все содержимое файла рассматривается уже как содержимое пакета.

Давайте добавим в проект файл с названием email.kt:

Теперь определим в файле следующий код:

Итак, наш пакет называется "email". Данный пакет включает в себя класс Message, содержащий одно свойство -- text. По сути, речь идет о классе, представляющем email-сообщение, причем свойство text -- это, соответственно, текст сообщения.

Кроме того, в пакете определена функция send(), условно отправляющая сообщение на определенный адрес.

Представим, что нам надо задействовать функционал данного пакета в другом файле. Чтобы подключить пакетные сущности, нужно применить директиву import. На практике возможны разные способы подключения какого-нибудь функционала из пакета.

Во-первых, мы можем подключить весь пакет в целом:

После названия пакета будет проставлена звездочка и точка, в результате чего импортируются все типы из пакета.

Для примера возьмем другой файл проекта app.kt, определяющий функцию main, и воспользуемся в нем функционалом пакета email:

Так как в начале файла импортированы все типы из email-пакета, есть возможность использовать в функции main как класс Message, так и функцию send .

Консольный вывод будет следующим:

Во-вторых, есть возможность импортировать типы, которые определены в пакете, по отдельности:

Встроенные пакеты

Также язык Kotlin имеет встроенные пакеты -- они подключаются по дефолту в любой Kotlin-файл:

В результате, если надо будет использовать какие-либо типы, определенные в вышеуказанных пакетах, импортировать эти пакеты явным образом не надо будет.

По материалам https://metanit.com/.