Modificateurs de visibilité Kotlin

Dans cet article, vous découvrirez les 4 modificateurs de visibilité de Kotlin et leur fonctionnement dans différents scénarios.

Les modificateurs de visibilité sont des mots-clés qui définissent la visibilité (accessibilité) des classes, des objets, de l'interface, des constructeurs, des fonctions, des propriétés et de leurs setters. (Vous ne pouvez pas définir le modificateur de visibilité des getters car ils ont toujours la même visibilité que celle de la propriété.)

Dans l'article Kotlin Class and Objects, vous avez découvert les modificateurs de visibilité publicet privateen bref. Vous découvrirez deux autres modificateurs de visibilité protectedet internal(ainsi que publicet private) en détail.

Modificateurs de visibilité à l'intérieur du package

Un package organise un ensemble de fonctions, propriétés et classes, objets et interfaces associés. Lecture recommandée: Kotlin Packages

Modificateur La description
Publique les déclarations sont visibles partout
privé visible à l'intérieur du fichier contenant la déclaration
interne visible à l'intérieur du même module (un ensemble de fichiers Kotlin compilés ensemble)
protégé non disponible pour les packages (utilisé pour les sous-classes)

Remarque: si le modificateur de visibilité n'est pas spécifié, il l'est publicpar défaut.

Prenons un exemple:

 // nom du fichier: hello.kt package test fun function1 () () // public par défaut et visible partout private fun function2 () () // visible dans hello.kt internal fun function3 () () // visible dans le même module var name = "Foo" // visible partout get () = field // visible dans hello.kt (identique à sa propriété) private set (value) (// visible dans hello.kt field = value) private class class1 () // visible dans hello.kt

Modificateurs de visibilité à l'intérieur des classes et des interfaces

Voici comment les modificateurs de visibilité fonctionnent pour les membres (fonctions, propriétés) déclarés à l'intérieur d'une classe:

Modificateur La description
Publique visible par tout client qui peut voir la classe déclarante
privé visible à l'intérieur de la classe uniquement
protégé visible à l'intérieur de la classe et de ses sous-classes
interne visible par tout client à l'intérieur du module qui peut voir la classe déclarante

Remarque: Si vous remplacez un protectedmembre dans la classe dérivée sans spécifier sa visibilité, sa visibilité sera également protected.

Prenons un exemple:

 open class Base () (var a = 1 // public par défaut private var b = 2 // private to Base class protected open val c = 3 // visible par la base et la classe Derived internal val d = 4 // visible à l'intérieur du même module protected fun e () () // visible par la classe Base et la classe Derived) Dérivé: Base () (// a, c, d et e () de la classe Base sont visibles // b n'est pas visible override val c = 9 // c est protégé) fun main (args: Array) (val base = Base () // base.a et base.d sont visibles // base.b, base.c et base .e () ne sont pas visibles val dérivé = Derived () // dérivé.c n'est pas visible) 

Modification de la visibilité d'un constructeur

Par défaut, la visibilité d'un constructeur est public. Cependant, vous pouvez le changer. Pour cela, vous devez ajouter explicitement un constructormot-clé.

Le constructeur est publicpar défaut dans l'exemple ci-dessous:

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

Voici comment vous pouvez modifier sa visibilité.

 class Test constructeur privé (val a: Int) (// code)

Voici le constructeur private.

Remarque: dans Kotlin, les fonctions, variables et classes locales ne peuvent pas avoir de modificateurs de visibilité.

Articles intéressants...