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.