Пакеты и импорты

Файл с исходным кодом может начинаться с объявления пакета.

package org.example

fun printMessage() { /*...*/ }
class Message { /*...*/ }

// ...

Всё содержимое файла с исходниками (например, классы и функции) располагается в объявленном пакете. Таким образом, в приведённом выше примере полное имя функции printMessage() будет org.example.printMessage, а полное имя класса Message - org.example.Message.

Если файл не содержит явного объявления пакета, то его содержимое находится в безымянном пакете по умолчанию.

Импорт по умолчанию

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

Дополнительные пакеты импортируются в зависимости от платформы:

Импорт

Помимо импорта по умолчанию каждый файл может содержать свои собственные объявления импорта.

Вы можете импортировать одно имя:

import org.example.Message // теперь Message можно использовать без указания пакета

Можете импортировать всё доступное содержимое пространства имён (пакет, класс, объект и т.д.):

import org.example.* // всё в 'org.example' становится доступно без указания пакета

При совпадении имён мы можем разрешить коллизию используя ключевое слово as для локального переименования совпадающей сущности.

import org.example.Message // Message доступен
import org.test.Message as testMessage // testMessage заменяет имя 'org.test.Message'

Ключевое слово import можно использовать не только с классами, но и с другими объявлениями:

Область видимости объявлений верхнего уровня

Если объявление верхнего уровня отмечено как private, то оно является private в файле, в котором оно объявлено (см. Модификаторы области видимости).