En este tutorial discutiremos sobre el uso de los modificadores de visibilidad en Kotlin, con el fin de restringir el uso de clases, objetos, interfaces, constructores, funciones, propiedades y sus setters.
Restricciones De Visibilidad En Kotlin
Kotlin nos provee las siguientes palabras claves de modificadores, para restringir la visibilidad de las declaraciones:
private: Marca una declaración como visible en la clase o archivo actualprotected: Marca una declaración como visible en la clase y subclases de la mismainternal: Marca una declaración como visible en el módulo actualpublic: Marca una declaración como visible en todas partes
Si omites el modificador en una declaración, el valor por defecto asignado será public junto a final.
Declaraciones De Nivel Superior
Cuando una declaración de nivel superior es ubicada en un archivo Kotlin, los modificadores la restringen así:
| Modificador | Declaración Nivel Superior |
|---|---|
public | Visible en todas partes |
internal | Visible en el módulo actual |
protected | No disponible |
private | Visible en el archivo |
Por ejemplo:
// Nombre del archivo: TopLevel.kt
public val propiedad = "Propiedad" // Visible en cualquier lugar
private fun funcion() = println("Función") // Visible solo en TopLevel.kt
internal class Clase // Visible solo en el módulo "main"
Clases E Interfaces
En el caso de las clases e interfaces, sus miembros son afectados de la siguiente manera:
| Modificador | Miembro De Clase |
|---|---|
public | Visible en todo lugar |
internal | Visible en el módulo |
protected | Visible en las subclases |
privated | Visible solo en la clase actual |
Por ejemplo:
open class A {
public var m1 = 10
internal var m2 = "Propiedad interna"
private fun m3() = println("Método privado")
protected open fun m4() = m1 + 10
}
class B : A() {
// m1 es visible pero no se puede sobrescribir
// m2 es visible pero no se puede sobrescribir
// m3 no es visible
// m4 es visible y se puede sobrescribir
public override fun m4() = m1 + 100
}
Nota: el modificador open habilita la sobrescritura de un miembro por una subclase. Es lo contrario a final. Y el modificador override aplica la sobrescritura desde la subclase.
Visibilidad De Constructores
Por defecto los constructores tienen definido el modificador public. Si deseas cambiar su restricción, incluye la palabra reservada constructor y antepón el modificador.
class Table(height: Int)
class Eraser internal constructor(val dimen: Int)
open class Pencil protected constructor(val mark: String)
class Book private constructor(val pages: Int)
El modificador protected es equivalente a private si la clase sigue siendo final. Por lo que si la marcas con open será visible para las subclases.
¿Estás Creando Una App De tareas?
Te comparto una plantilla Android profesional con arquitectura limpia, interfaz moderna y funcionalidades listas para usar. Ideal para acelerar tu desarrollo.
Únete Al Discord De Develou
Si tienes problemas con el código de este tutorial, preguntas, recomendaciones o solo deseas discutir sobre desarrollo Android conmigo y otros desarrolladores, únete a la comunidad de Discord de Develou y siéntete libre de participar como gustes. ¡Te espero!
