Пакеты в Kotlin
В языке программирования Kotlin пакеты представляют собой логический блок, объединяющий функционал. Это могут быть, к примеру, функции и классы, которые используются для решения схожих задач. В результате функции и классы, предназначенные для решения одной задачи, вы сможете поместить в один пакет, для решения другой задачи -- во второй пакет и т. д.
Чтобы определить пакет, используют ключевое слово package, после чего идет имя пакета:
На практике определение пакета помещается в начало файла, в результате чего все содержимое файла рассматривается уже как содержимое пакета.
Давайте добавим в проект файл с названием email.kt:
Теперь определим в файле следующий код:
Итак, наш пакет называется "email". Данный пакет включает в себя класс Message, содержащий одно свойство -- text. По сути, речь идет о классе, представляющем email-сообщение, причем свойство text -- это, соответственно, текст сообщения.
Кроме того, в пакете определена функция
Представим, что нам надо задействовать функционал данного пакета в другом файле. Чтобы подключить пакетные сущности, нужно применить директиву import. На практике возможны разные способы подключения какого-нибудь функционала из пакета.
Во-первых, мы можем подключить весь пакет в целом:
После названия пакета будет проставлена звездочка и точка, в результате чего импортируются все типы из пакета.
Для примера возьмем другой файл проекта app.kt, определяющий функцию main, и воспользуемся в нем функционалом пакета email:
Так как в начале файла импортированы все типы из email-пакета, есть возможность использовать в функции main как класс Message, так и функцию send .
Консольный вывод будет следующим:
Во-вторых, есть возможность импортировать типы, которые определены в пакете, по отдельности:
Встроенные пакеты
Также язык Kotlin имеет встроенные пакеты -- они подключаются по дефолту в любой Kotlin-файл:
В результате, если надо будет использовать какие-либо типы, определенные в вышеуказанных пакетах, импортировать эти пакеты явным образом не надо будет.
По материалам https://metanit.com/.