Sobes.tech
Junior

Čo je modifikátor prístupu 'internal' v Kotlin a ako ho použiť?

sobes.tech AI

Odpoveď od AI

Prístupový modifikátor internal v Kotlin znamená, že deklarácia je viditeľná v rámci toho istého modulu. Modul môže byť súbor Kotlin súborov skompilovaných spoločne, napríklad:

  • Gradle modul (súbor zdrojového kódu).
  • Maven modul.
  • Ant súbor zdrojového kódu.

Toto je užitočné na skrytie implementačných detailov v rámci modulu, čím sa stávajú nedostupnými pre kód z iných modulov.

internal možno použiť s:

  • Triedami
  • Rozhraniami
  • Objektmi (object)
  • Funkciami
  • Vlastnosťami
  • Konštruktormi

Príklad použitia:

// Modul "module1"
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Tento kód je viditeľný iba v rámci module1
    }
}

// Tento objekt je tiež viditeľný iba v rámci module1
internal object InternalObject {
    internal val internalProperty = "Vnútorná hodnota"
}
// Modul "module1"
package com.example.module1

fun someFunctionInModule1() {
    val internalCls = InternalClass() // Dostupné
    internalCls.internalFunction()     // Dostupné
    println(InternalObject.internalProperty) // Dostupné
}
// Modul "module2"
package com.example.module2

import com.example.module1.InternalClass // Chyba kompilácie
import com.example.module1.InternalObject // Chyba kompilácie

fun someFunctionInModule2() {
    // Nie je možné vytvoriť inštanciu InternalClass alebo pristúpiť k InternalObject
    // val internalCls = InternalClass() // Nedostupné
    // println(InternalObject.internalProperty) // Nedostupné
}

Hlavný rozdiel od public (viditeľné všade), private (len v rámci triedy) a protected (v rámci triedy a jej podtried) je práve na úrovni viditeľnosti podľa modulov.