Sobes.tech
Junior

Kas yra prieigos modifikatorius 'internal' Kotlin ir kaip jį naudoti?

sobes.tech AI

Atsakymas iš AI

Kotlin'o prieigos modifikatorius internal reiškia, kad deklaracija yra matoma tik tame pačiame modulyje. Modulis gali būti rinkinys Kotlin failų, kurie yra kompiliuojami kartu, pavyzdžiui:

  • Gradle modulis (šaltinio rinkinys).
  • Maven modulis.
  • Ant šaltinio rinkinys.

Tai naudinga slepiant įgyvendinimo detales modulyje, padarant jas neprieinamomis kitų modulių kodui.

Naudoti internal galima su:

  • Klasėmis
  • Sąsajomis
  • Objektų (object)
  • Funkcijomis
  • Savybėmis
  • Konstruktoriais

Pavyzdys:

// "module1" modulis
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Šis kodas matomas tik module1 viduje
    }
}

// Šis objektas taip pat matomas tik module1 viduje
internal object InternalObject {
    internal val internalProperty = "Internal value"
}
// "module1" modulis
package com.example.module1

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

import com.example.module1.InternalClass // Kompiliacijos klaida
import com.example.module1.InternalObject // Kompiliacijos klaida

fun someFunctionInModule2() {
    // Negalima sukurti InternalClass egzemplioriaus ar pasiekti InternalObject
    // val internalCls = InternalClass() // Neprieinama
    // println(InternalObject.internalProperty) // Neprieinama
}

Pagrindinis skirtumas nuo public (matomas visur), private (matomas tik klasės viduje) ir protected (matomas tik klasės ir jos pogrupio viduje) yra būtent matomumo lygis moduliuose.