Sobes.tech
Junior

Mi az az 'internal' hozzáférés módosító Kotlinban, és hogyan kell használni?

sobes.tech MI

Válasz az MI-től

A internal hozzáférés módosító Kotlinban azt jelenti, hogy a deklaráció azon a modullal belül látható. Egy modul lehet egy Kotlin fájlokból álló csoport, amelyeket együtt fordítanak le, például:

  • Gradle modul (forráskód halmaz)
  • Maven modul
  • Ant forráskód halmaz

Ez hasznos a modulon belüli implementációs részletek elrejtésére, így azok nem elérhetők más modulok kódja számára.

Az internal használható:

  • Osztályok
  • Interfészek
  • Objektumok (object)
  • Függvények
  • Tulajdonságok
  • Konstruktorok

Használati példa:

// "module1" modul
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Ez a kód csak a module1-en belül látható
    }
}

// Ez az objektum szintén csak a module1-en belül látható
internal object InternalObject {
    internal val internalProperty = "Belső érték"
}
// "module1" modul
package com.example.module1

fun someFunctionInModule1() {
    val internalCls = InternalClass() // Elérhető
    internalCls.internalFunction()     // Elérhető
    println(InternalObject.internalProperty) // Elérhető
}
// "module2" modul
package com.example.module2

import com.example.module1.InternalClass // Fordítási hiba
import com.example.module1.InternalObject // Fordítási hiba

fun someFunctionInModule2() {
    // Nem lehet példányt létrehozni az InternalClass-ból, vagy elérni az InternalObject-et
    // val internalCls = InternalClass() // Nem elérhető
    // println(InternalObject.internalProperty) // Nem elérhető
}

A fő különbség a public (mindenhol látható), private (csak osztályon belül) és protected (az osztályon belül és leszármazott osztályokban) között az, hogy az modul szintű láthatósági szintet határoz meg.