Sobes.tech
Junior

Czym jest modyfikator dostępu 'internal' w Kotlinie i jak go używać?

sobes.tech AI

Odpowiedź od AI

Modyfikator dostępu internal w Kotlinie oznacza, że deklaracja jest widoczna w obrębie tego samego modułu. Moduł może być zestawem plików Kotlin skompilowanych razem, na przykład:

  • Moduł Gradle (zestaw kodu źródłowego).
  • Moduł Maven.
  • Zestaw kodu Ant.

Jest to przydatne do ukrywania szczegółów implementacji wewnątrz modułu, czyniąc je niedostępnymi dla kodu z innych modułów.

internal można używać z:

  • Klasami
  • Interfejsami
  • Obiektami (object)
  • Funkcjami
  • Właściwościami
  • Konstruktorami

Przykład użycia:

// Moduł "module1"
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Ten kod jest widoczny tylko wewnątrz module1
    }
}

// Ten obiekt jest również widoczny tylko wewnątrz module1
internal object InternalObject {
    internal val internalProperty = "Wartość wewnętrzna"
}
// Moduł "module1"
package com.example.module1

fun someFunctionInModule1() {
    val internalCls = InternalClass() // Dostępne
    internalCls.internalFunction()     // Dostępne
    println(InternalObject.internalProperty) // Dostępne
}
// Moduł "module2"
package com.example.module2

import com.example.module1.InternalClass // Błąd kompilacji
import com.example.module1.InternalObject // Błąd kompilacji

fun someFunctionInModule2() {
    // Nie można utworzyć instancji InternalClass ani odwołać się do InternalObject
    // val internalCls = InternalClass() // Niedostępne
    // println(InternalObject.internalProperty) // Niedostępne
}

Główna różnica w porównaniu do public (widoczne wszędzie), private (tylko w klasie) i protected (w klasie i jej podklasach) polega na poziomie widoczności w obrębie modułów.