Modificadores de visibilidad de Kotlin

En este artículo, aprenderá sobre los 4 modificadores de visibilidad en Kotlin y cómo funcionan en diferentes escenarios.

Los modificadores de visibilidad son palabras clave que establecen la visibilidad (accesibilidad) de clases, objetos, interfaz, constructores, funciones, propiedades y sus establecedores. (No puede establecer el modificador de visibilidad de los captadores, ya que siempre tienen la misma visibilidad que la de la propiedad).

En el artículo de Kotlin Class and Objects, aprendiste sobre los modificadores de visibilidad publicy privateen breve. Aprenderá sobre dos modificadores de visibilidad más protectedy internal(así como publicy private) en detalle.

Modificadores de visibilidad dentro del paquete

Un paquete organiza un conjunto de funciones, propiedades y clases, objetos e interfaces relacionados. Lectura recomendada: Paquetes de Kotlin

Modificador Descripción
público las declaraciones son visibles en todas partes
privado visible dentro del archivo que contiene la declaración
interno visible dentro del mismo módulo (un conjunto de archivos Kotlin compilados juntos)
protegido no disponible para paquetes (usado para subclases)

Nota: Si no se especifica el modificador de visibilidad, lo es publicde forma predeterminada.

Tomemos un ejemplo:

 // nombre de archivo: hello.kt paquete test fun function1 () () // público por defecto y visible en todas partes private fun function2 () () // visible dentro de hello.kt internal fun function3 () () // visible dentro del mismo módulo var name = "Foo" // visible en todas partes get () = campo // visible dentro de hello.kt (igual que su propiedad) conjunto privado (valor) (// visible dentro de hello.kt campo = valor) clase privada class1 () // visible dentro de hello.kt

Modificadores de visibilidad dentro de clases e interfaces

Así es como funcionan los modificadores de visibilidad para miembros (funciones, propiedades) declarados dentro de una clase:

Modificador Descripción
público visible para cualquier cliente que pueda ver la clase declarante
privado visible solo dentro de la clase
protegido visible dentro de la clase y sus subclases
interno visible para cualquier cliente dentro del módulo que pueda ver la clase declarante

Nota: Si reemplaza un protectedmiembro en la clase derivada sin especificar su visibilidad, su visibilidad también lo será protected.

Tomemos un ejemplo:

 open class Base () (var a = 1 // público por defecto privado var b = 2 // privado a la clase base protegido open val c = 3 // visible para la base y la clase derivada internal val d = 4 // visible dentro del mismo módulo protected fun e () () // visible para la clase Base y Derived) class Derived: Base () (// a, c, d, ye () de la clase Base son visibles // b no es visible anular val c = 9 // c está protegido) fun main (args: Array) (val base = Base () // base.a y base.d son visibles // base.b, base.cy base .e () no son visibles val derivado = Derivado () // derivado.c no es visible) 

Cambiar la visibilidad de un constructor

Por defecto, la visibilidad de un constructor es public. Sin embargo, puede cambiarlo. Para eso, debe agregar explícitamente la constructorpalabra clave.

El constructor es publicpor defecto en el siguiente ejemplo:

 class Test (val a: Int) (// código) 

Así es como puede cambiar su visibilidad.

 class Test constructor privado (val a: Int) (// código)

Aquí está el constructor private.

Nota: En Kotlin, las funciones, variables y clases locales no pueden tener modificadores de visibilidad.

Articulos interesantes...