Sobes.tech
Junior

Какво е модификаторът за достъп 'internal' в Kotlin и как да го използваме?

sobes.tech AI

Отговор от 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 = "Вътрешна стойност"
}
// Модул "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 (вътре в класа и неговите подкласове) е именно в нивото на видимост по модули.