Junior
¿Qué es el modificador de acceso 'internal' en Kotlin y cómo se usa?
sobes.tech AI
Respuesta de la IA
El modificador de acceso internal en Kotlin significa que la declaración es visible dentro del mismo módulo. Un módulo puede ser un conjunto de archivos Kotlin compilados juntos, por ejemplo:
- Un módulo Gradle (conjunto de código fuente).
- Un módulo Maven.
- Un conjunto de código Ant.
Esto es útil para ocultar detalles de implementación dentro del módulo, haciéndolos inaccesibles para el código de otros módulos.
Se puede usar internal con:
- Clases
- Interfaces
- Objetos (object)
- Funciones
- Propiedades
- Constructores
Ejemplo de uso:
// Módulo "module1"
package com.example.module1
internal class InternalClass {
internal fun internalFunction() {
// Este código solo es visible dentro de module1
}
}
// Este objeto también solo es visible dentro de module1
internal object InternalObject {
internal val internalProperty = "Valor interno"
}
// Módulo "module1"
package com.example.module1
fun someFunctionInModule1() {
val internalCls = InternalClass() // Disponible
internalCls.internalFunction() // Disponible
println(InternalObject.internalProperty) // Disponible
}
// Módulo "module2"
package com.example.module2
import com.example.module1.InternalClass // Error de compilación
import com.example.module1.InternalObject // Error de compilación
fun someFunctionInModule2() {
// No se puede crear una instancia de InternalClass ni acceder a InternalObject
// val internalCls = InternalClass() // No disponible
// println(InternalObject.internalProperty) // No disponible
}
La principal diferencia con public (visible en todas partes), private (solo dentro de la clase) y protected (dentro de la clase y sus subclases) radica en el nivel de visibilidad por módulos.