Object-private scope : private[this]
En Scala comme en Java, l'accessibilité private donne le droit d'accès à un attribut privé d'une autre instance au sein de la même classe. Clarifions par un exemple... Dans l'exemple ci-dessus, la méthode m peut bien accéder à l'attribut value de l'objet Counter malgré que cet attribut soit déclaré privé. Ce comportement est normal car on est toujours au sein de la classe Counter.
Comment peut-on empêcher qu'un attribut privé ne soit accessible que par l'instance courante de l'objet ? Cela revient à générer une erreur de compilation à la ligne 12 other.value
Scala nous offre une restriction supplémentaire qu'on appelle object-private scope. Il suffit de déclarer l'attribut comme private[this]. Le mot clé this indique que l'attribut n'est accessible que par l'instance courante. On remarque une erreur de compilation lorsque l'attribut value est déclaré private[this]
Package scope
L'accessibilité private[nomPackage] donne le droit d'accès à une méthode ou un attribut depuis le package nomPackage et ses sous packages. Dans l'exemple ci-dessus, la méthode doX est déclarée comme private[scala] et donc accessible depuis le package scala contrairement à la méthode privée doY accessible uniquement au sein de la classe Foo
Dans le package other, ni doX ni doY n'est accessible depuis la classe Quux
Aucun commentaire:
Enregistrer un commentaire