Sobes.tech
Junior

Šta je modifikator pristupa 'internal' u Kotlinu i kako ga koristiti?

sobes.tech АИ

Одговор од АИ

Modifikator pristupa internal u Kotlinu znači da je deklaracija vidljiva unutar istog modula. Modul može biti skup Kotlin fajlova koji se kompajliraju zajedno, na primer:

  • Gradle modul (skup izvornog koda).
  • Maven modul.
  • Ant skup koda.

Ovo je korisno za skrivanje detalja implementacije unutar modula, čineći ih nedostupnim za kod iz drugih modula.

internal se može koristiti sa:

  • Klasama
  • Interfejsima
  • Objekatima (object)
  • Funkcijama
  • Svojstvima
  • Konstruktorima

Primer upotrebe:

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

internal class InternalClass {
    internal fun internalFunction() {
        // Ovaj kod je vidljiv samo unutar module1
    }
}

// Ovaj objekat je takođe vidljiv samo unutar module1
internal object InternalObject {
    internal val internalProperty = "Interna vrednost"
}
// Modul "module1"
package com.example.module1

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

import com.example.module1.InternalClass // Greška pri kompilaciji
import com.example.module1.InternalObject // Greška pri kompilaciji

fun someFunctionInModule2() {
    // Ne može da kreira instancu InternalClass ili da pristupi InternalObject
    // val internalCls = InternalClass() // Nije dostupno
    // println(InternalObject.internalProperty) // Nije dostupno
}

Glavna razlika u odnosu na public (vidljivo svuda), private (samo unutar klase) i protected (unutar klase i njenih podklasa) je upravo u nivou vidljivosti po modulima.