Sobes.tech
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.