Назад к вопросам
Junior
100
questionbank
Что такое модификатор доступа 'internal' в Kotlin и как его использовать?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Модификатор доступа internal в Kotlin означает, что объявление видимо внутри того же модуля. Модулем может быть набор Kotlin-файлов, скомпилированных вместе, например:
- Модуль Gradle (исходный набор).
- Модуль Maven.
- Исходный набор Ant.
Это полезно для сокрытия деталей реализации внутри модуля, делая их недоступными для кода из других модулей.
Использовать internal можно с:
- Классами
- Интерфейсами
- Объектами (object)
- Функциями
- Свойствами
- Конструкторами
Пример использования:
// Модуль "module1"
package com.example.module1
internal class InternalClass {
internal fun internalFunction() {
// Этот код виден только внутри module1
}
}
// Этот объект также виден только внутри module1
internal object InternalObject {
internal val internalProperty = "Internal value"
}
// Модуль "module1"
package com.example.module1
fun someFunctionInModule1() {
val internalCls = InternalClass() // Доступно
internalCls.internalFunction() // Доступно
println(InternalObject.internalProperty) // Доступно
}
// Модуль "module2"
package com.example.module2
import com.example.module1.InternalClass // Ошибка компиляции
import com.example.module1.InternalObject // Ошибка компиляции
fun someFunctionInModule2() {
// Нельзя создать экземпляр InternalClass или обратиться к InternalObject
// val internalCls = InternalClass() // Недоступно
// println(InternalObject.internalProperty) // Недоступно
}
Главное отличие от public (видимо везде) и private (видимо только внутри класса) и protected (видимо внутри класса и его подклассов) заключается именно в уровне видимости по модулям.