Spec-Zone.ru › Kotlin 2

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

В проекте 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.*

  • kotlin.annotation.*

  • kotlin.collections.*

  • kotlin.comparisons.*

  • kotlin.io.*

  • kotlin.ranges.*

  • kotlin.sequences.*

  • kotlin.text.*

  • kotlin.math.*

В зависимости от целевой платформы Kotlin импортирует дополнительные пакеты:

  • JVM:

    • java.lang.*

    • kotlin.jvm.*

  • JS:

    • kotlin.js.*

Видимость и импорты

Возможность импортировать сущность зависит от ее модификаторов видимости:

  • Сущности public можно импортировать откуда угодно.

  • Сущности internal можно импортировать только в пределах того же модуля.

  • Сущности protected нельзя импортировать.

  • Сущности верхнего уровня private доступны только в файле, где они объявлены.

  • Другие сущности private нельзя импортировать.

07 июля 2026
Ключевые слова и операторыАннотации

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API