Modificateurs de Visibilité Kotlin – public, protected, internal, private

Dans ce tutoriel, nous discuterons des différents modificateurs de visibilité disponibles dans la programmation Kotlin.

Modificateurs de visibilité Kotlin

Les modificateurs de visibilité sont des éléments qui, lorsqu’ils sont ajoutés à une classe/interface/propriété/fonction en Kotlin, définissent où ils sont visibles et d’où ils peuvent être accédés. Les setters des propriétés en Kotlin peuvent avoir un modificateur distinct de la propriété. Les getters ne peuvent pas avoir de modificateur de visibilité défini. Ils utilisent le même modificateur que celui de la propriété. Voici les modificateurs de visibilité :

  • public
  • protected
  • internal
  • private

Modificateur public

A Public Modifier is the default modifier in Kotlin. Just like the Java public modifier, it means that the declaration is visible everywhere.


class Hello{
}

public class H{
}

fun hi()
public fun hello()

val i = 0
public val j = 5

Toutes les déclarations ci-dessus se trouvent dans le haut niveau du fichier. TOUTES sont publiques. Si nous ne mentionnons pas la déclaration des membres de la classe, ils sont publics (sauf s’ils sont redéfinis).

Modificateur protégé

A Protected Modifier in Kotlin: CANNOT be set on top-level declarations. Declarations that are protected in a class, can be accessed only in their subclasses.

open class Pr{
    protected val i = 0
}

class Another : Pr{

    fun iValue() : Int
    {
        return i
    }
}

Les classes qui ne sont pas une sous-classe de Pr ne peuvent pas accéder aux déclarations de i. Les déclarations protégées, lorsqu’elles sont surchargées, conservent le même modificateur protégé dans la sous-classe, sauf si vous les changez explicitement.

open class Pr{
    open protected val i = 0
}

class Another : Pr(){

    fun iValue() : Int
    {
        return i
    }
    
    override val i = 5 //protected visibility
}

Le concept des modificateurs protégés en Kotlin, tel que défini ci-dessus, diffère de celui en Java.

Modificateur Interne

Interne est un nouveau modificateur disponible en Kotlin et qui n’existe pas en Java. Définir une déclaration comme interne signifie qu’elle sera disponible uniquement dans le même module. Par module en Kotlin, nous entendons un groupe de fichiers compilés ensemble.

internal class A {
}

internal val x = 0

Celles-ci ne seront pas visibles en dehors du module actuel. Le modificateur interne est utile lorsque vous devez masquer des implémentations spécifiques de bibliothèque aux utilisateurs. Cela n’était pas possible en utilisant la visibilité package-private en Java.

Modificateurs Privés

Les modificateurs privés n’autorisent pas la visibilité des déclarations en dehors de la portée actuelle.

var setterVisibility: String = "abc"
private set

open class Pr{
    open protected val i = 0

    fun iValue() : Int
    {
        setterVisibility = 10
        return setterVisibility
    }
}

Étant donné que Kotlin autorise plusieurs définitions de niveau supérieur, le code ci-dessus fonctionne. Ce qui suit ne fonctionne pas.

private open class ABC{
    private val x = 6
}

private class BDE : ABC()
{
    fun getX()
    {
        return x //x cannot be accessed here.
    }
}

x is visibile only from inside its class. We can set private constructors in the following way:

class PRIV private constructor(a: String) {
 ... 
}

Par défaut, les classes ont des constructeurs publics. Où que la classe aille, le constructeur suit. Nous devons définir le modificateur de visibilité sur le constructeur lui-même. Ainsi, Kotlin utilise les modificateurs protégés et internes différemment de Java. De plus, le modificateur par défaut de Java est package-private, ce qui n’existe pas encore en Kotlin. Cela marque la fin de ce rapide tutoriel sur les modificateurs de visibilité en Kotlin.

Source:
https://www.digitalocean.com/community/tutorials/kotlin-visibility-modifiers-public-protected-internal-private