Sobes.tech
Junior

Co je to modifikátor přístupu 'internal' v Kotlinu a jak ho používat?

sobes.tech AI

Odpověď od AI

Kotlinis internal ligipääsukorral tähendab, et deklaratsioon on sama mooduli sees nähtav. Moodul võib olla Kotlin-failide kogum, mis kompileeritakse koos, näiteks:

  • Gradle moodul (allikakoodide kogum).
  • Maven moodul.
  • Ant koodikogum.

See on kasulik, et varjata mooduli sees rakenduse üksikasju, muutes need teiste moodulite koodile kättesaamatuks.

internal saab kasutada järgmiste elementidega:

  • Klassid
  • Liidesed
  • Obektid (object)
  • Funktsioonid
  • Omadused
  • Konstruktorid

Näide kasutamisest:

// Moodul "module1"
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // See kood on nähtav ainult module1 sees
    }
}

// See objekt on samuti nähtav ainult module1 sees
internal object InternalObject {
    internal val internalProperty = "Sisemine väärtus"
}
// Moodul "module1"
package com.example.module1

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

import com.example.module1.InternalClass // Kompileerimisviga
import com.example.module1.InternalObject // Kompileerimisviga

fun someFunctionInModule2() {
    // Ei saa luua InternalClass eksemplari ega pääseda InternalObject-ile ligi
    // val internalCls = InternalClass() // Pole saadaval
    // println(InternalObject.internalProperty) // Pole saadaval
}

Peamine erinevus public (nähtav igal pool), private (ainult klassi sees) ja protected (klassis ja selle alamklassides) vahel on see, et see määrab mooduli tasemel nähtavuse.