Пакеты и импорты
В проекте Kotlin код организован с помощью пакетов и импортов:
Пакет — это контейнер для одного или нескольких файлов Kotlin. Файлы связываются с пакетом с помощью заголовка
package.Импорт — это директива, которая делает сущности из других пакетов доступными в текущем файле.
Заголовки пакетов
Исходный файл может начинаться с заголовка пакета:
package org.example
fun printMessage() { /*...*/ }
class Message(val text: String) { /*...*/ }
Все содержимое исходного файла, например классы и функции, относится к этому пакету. Полное имя сущности состоит из имени пакета и имени сущности. В этом примере:
Полное имя
printMessage()—org.example.printMessage.Полное имя
Message—org.example.Message.
Если в файле нет заголовка пакета, его содержимое относится к корневому пакету.
Импорты
Чтобы использовать сущность из файла в другом пакете, воспользуйтесь директивой import. Помимо импортов по умолчанию, в каждом файле можно объявить собственные импорты.
Импорт одной сущности
Импортируйте определенную сущность, чтобы использовать ее без уточнения имени:
// Message is accessible without qualification
import org.example.Message
fun main() {
val message = Message("Hello")
println(message.text)
}
Импорт содержимого области видимости
Импорты со звездочкой, оканчивающиеся на звездочку *, импортируют все именованные сущности из соответствующей области видимости:
// Everything in org.example is accessible
import org.example.*
fun main() {
printMessage()
val message = Message("Hi")
}
Если импортировать сущность и с помощью импорта со звездочкой, и явно, то при разрешении перегрузки приоритет будет у явного импорта.
Разрешение конфликтов имен с помощью псевдонимов
Если две импортированные сущности имеют одинаковое имя, используйте ключевое слово as, чтобы локально переименовать одну из них:
// Message refers to org.example.Message
import org.example.Message
// TestMessage refers to org.test.Message
import org.test.Message as TestMessage
fun main() {
val a = Message("from example")
val b = TestMessage("from test")
}
Что можно импортировать
Ключевое слово import используется не только для классов. Можно импортировать любые из следующих сущностей, независимо от того, находятся ли они в пакете, классе, объекте или перечислении:
-
Функции и свойства верхнего уровня, объявленные непосредственно в пакете:
import org.example.printMessage // Top-level function import org.example.VERSION // Top-level property
-
Функции и свойства из объявлений объектов:
import org.example.Config.DEFAULT_TIMEOUT // Property from an object import org.example.Config.loadSettings // Function from an object
-
Элементы объекта-компаньона, на которые ссылаются через имя внешнего класса:
import org.example.MyClass.create // Refers to MyClass.Companion.create
-
import org.example.Color.RED import org.example.Color.GREEN
-
Вложенные классы:
import org.example.Outer.Nested
Импорты по умолчанию
В Kotlin по умолчанию включены следующие импорты:
В зависимости от целевой платформы Kotlin импортирует дополнительные пакеты:
-
JVM:
-
JS:
Видимость и импорты
Возможность импортировать сущность зависит от ее модификаторов видимости:
Сущности
publicможно импортировать откуда угодно.Сущности
internalможно импортировать только в пределах того же модуля.Сущности
protectedнельзя импортировать.Сущности верхнего уровня
privateдоступны только в файле, где они объявлены.Другие сущности
privateнельзя импортировать.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/packages.html