Junior
Czym jest modyfikator dostępu 'internal' w Kotlinie i jak go używać?
sobes.tech AI
Odpowiedź od AI
Modyfikator dostępu internal w Kotlinie oznacza, że deklaracja jest widoczna w obrębie tego samego modułu. Moduł może być zestawem plików Kotlin skompilowanych razem, na przykład:
- Moduł Gradle (zestaw kodu źródłowego).
- Moduł Maven.
- Zestaw kodu Ant.
Jest to przydatne do ukrywania szczegółów implementacji wewnątrz modułu, czyniąc je niedostępnymi dla kodu z innych modułów.
internal można używać z:
- Klasami
- Interfejsami
- Obiektami (object)
- Funkcjami
- Właściwościami
- Konstruktorami
Przykład użycia:
// Moduł "module1"
package com.example.module1
internal class InternalClass {
internal fun internalFunction() {
// Ten kod jest widoczny tylko wewnątrz module1
}
}
// Ten obiekt jest również widoczny tylko wewnątrz module1
internal object InternalObject {
internal val internalProperty = "Wartość wewnętrzna"
}
// Moduł "module1"
package com.example.module1
fun someFunctionInModule1() {
val internalCls = InternalClass() // Dostępne
internalCls.internalFunction() // Dostępne
println(InternalObject.internalProperty) // Dostępne
}
// Moduł "module2"
package com.example.module2
import com.example.module1.InternalClass // Błąd kompilacji
import com.example.module1.InternalObject // Błąd kompilacji
fun someFunctionInModule2() {
// Nie można utworzyć instancji InternalClass ani odwołać się do InternalObject
// val internalCls = InternalClass() // Niedostępne
// println(InternalObject.internalProperty) // Niedostępne
}
Główna różnica w porównaniu do public (widoczne wszędzie), private (tylko w klasie) i protected (w klasie i jej podklasach) polega na poziomie widoczności w obrębie modułów.