English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans cet article, vous découvrirez les4Il existe plusieurs modificateurs d'accessibilité, ainsi que leur manière de fonctionner dans différentes situations.
Les modificateurs d'accessibilité sont des mots-clés utilisés pour définir la visibilité (accessibilité) des classes, des objets, des interfaces, des constructeurs, des fonctions, des propriétés et de leurs setters. (Les modificateurs d'accessibilité ne peuvent pas être définis pour les getters, car ils ont toujours la même accessibilité que les propriétés).
DansClasses et objets en KotlinDans cet article, vous avez brièvement découvert les modificateurs d'accessibilité public et private. Dans cet article, vous découvrirez en détail les deux autres modificateurs d'accessibilité protected et internal (ainsi que public et private).
Les paquets organisent un ensemble de fonctions, de propriétés et de classes, d'objets et d'interfaces liées
Modificateur | Description |
---|---|
public | Visible partout |
private | Visible à l'intérieur du fichier contenant la déclaration |
internal | Visible à l'intérieur du même module (un ensemble de fichiers Kotlin compilés ensemble) |
protected | Inutilisable pour les paquets (utilisé pour les sous-classes) |
Remarque :Si le modificateur de visibilité n'est pas spécifié, la valeur par défaut est public.
Laissez-nous prendre un exemple :
//Nom de fichier: hello.kt package test fun function1() {} //Par défaut, il est public et visible partout private fun function2() {} //Visible à l'intérieur de hello.kt internal fun function3() {} //Visible dans le même module var name = "Foo" //Visible partout get() = field //Visible à l'intérieur de hello.kt (comme ses propriétés) private set(value) { //Visible à l'intérieur de hello.kt field = value {} private class class1 {} //Visible à l'intérieur de hello.kt
Voici comment les modificateurs de visibilité fonctionnent pour les membres déclarés à l'intérieur d'une classe (fonctions, propriétés) :
Modificateur | Description |
---|---|
public | Visible pour tout client qui peut voir la déclaration de la classe |
private | Visible uniquement à l'intérieur de la classe |
protected | Visible dans la classe et ses sous-classes |
internal | Les clients du module peuvent voir toute déclaration de classe |
Remarque :Si vous redéfinissez un membre protected dans une classe dérivée sans spécifier sa visibilité, sa visibilité sera également protected.
Laissez-nous prendre un exemple :
open class Base() { var a = 1 //Par défaut, il est public private var b = 2 // La classe Base est privée protected open val c = 3 //Visible pour les classes Base et Derived internal val d = 4 //Visible dans le même module protected fun e() { } //Visible pour les classes Base et Derived {} class Derived: Base() { // a, c, d, et e() sont tous les attributs de la classe Base sont visibles // b n'est pas visible override val c = 9 // c est protected {} fun main(args: Array<String>) { val base = Base() //base.a et base.d sont visibles // base.b, base.c et base.e() ne sont pas visibles val derived = Derived() // derived.c invisible {}
Par défaut, la visibilité du constructeur est public. Cependant, vous pouvez le changer. Pour cela, vous devez ajouter explicitement la clé mot-clé constructor.
Dans l'exemple suivant, le constructeur est par défaut public :
class Test(val a: Int) { // code {}
Vous pouvez modifier sa visibilité en utilisant les méthodes suivantes.
class Test private constructor(val a: Int) { // code {}
Le constructeur ici est privé.
Remarque : Dans Kotlin, les fonctions locales, les variables et les classes ne peuvent pas avoir de modificateurs de visibilité.