Modificatori di visibilità di Kotlin

In questo articolo, imparerai a conoscere tutti e 4 i modificatori di visibilità in Kotlin e come funzionano in diversi scenari.

I modificatori di visibilità sono parole chiave che impostano la visibilità (accessibilità) di classi, oggetti, interfaccia, costruttori, funzioni, proprietà e relativi setter. (Non è possibile impostare il modificatore di visibilità dei getter poiché assumono sempre la stessa visibilità di quella della proprietà.)

Nell'articolo Kotlin Class and Objects, hai imparato a conoscere i modificatori di visibilità publice privatein breve. Imparerai a conoscere altri due modificatori di visibilità protectede internal(oltre a publice private) in dettaglio.

Modificatori di visibilità all'interno del pacchetto

Un pacchetto organizza una serie di funzioni, proprietà e classi, oggetti e interfacce correlate. Letture consigliate: Pacchetti Kotlin

Modificatore Descrizione
pubblico le dichiarazioni sono visibili ovunque
privato visibile all'interno del file contenente la dichiarazione
interno visibile all'interno dello stesso modulo (un insieme di file Kotlin compilati insieme)
protetto non disponibile per i pacchetti (utilizzato per le sottoclassi)

Nota: se il modificatore di visibilità non è specificato, è publicper impostazione predefinita.

Facciamo un esempio:

 // nome file: hello.kt pacchetto test fun function1 () () // public per impostazione predefinita e visibile ovunque private fun function2 () () // visibile all'interno di hello.kt fun function3 interna () () // visibile all'interno del stesso modulo var name = "Foo" // visibile ovunque get () = campo // visibile all'interno di hello.kt (uguale alla sua proprietà) private set (value) (// visibile all'interno di hello.kt field = value) private class class1 () // visibile all'interno di hello.kt

Modificatori di visibilità all'interno di classi e interfacce

Ecco come funzionano i modificatori di visibilità per i membri (funzioni, proprietà) dichiarati all'interno di una classe:

Modificatore Descrizione
pubblico visibile a qualsiasi cliente che può vedere la classe dichiarante
privato visibile solo all'interno della classe
protetto visibile all'interno della classe e delle sue sottoclassi
interno visibile a qualsiasi client all'interno del modulo che può vedere la classe dichiarante

Nota: se si sovrascrive un protectedmembro nella classe derivata senza specificarne la visibilità, anche la sua visibilità sarà protected.

Facciamo un esempio:

 open class Base () (var a = 1 // public by default private var b = 2 // private to Base class protected open val c = 3 // visible to the Base and the Derived class internal val d = 4 // visible all'interno dello stesso modulo protected fun e () () // visibile alla classe Base e alla classe Derived) Derived: Base () (// a, c, d ed e () della classe Base sono visibili // b non è visibile sovrascrivere val c = 9 // c è protetto) fun main (args: Array) (val base = Base () // base.a e base.d sono visibili // base.b, base.c e base .e () non sono visibili val derivato = Derivato () // derivato.c non è visibile) 

Modifica della visibilità di un costruttore

Per impostazione predefinita, la visibilità di un costruttore è public. Tuttavia, puoi cambiarlo. Per questo, è necessario aggiungere esplicitamente la constructorparola chiave.

Il costruttore è publicper impostazione predefinita nell'esempio seguente:

 class Test (val a: Int) (// code) 

Ecco come puoi modificarne la visibilità.

 class Test costruttore privato (val a: Int) (// codice)

Ecco il costruttore private.

Nota: in Kotlin, le funzioni, le variabili e le classi locali non possono avere modificatori di visibilità.

Articoli interessanti...