Niveau d'accessibilité

 

Comme déjà expliqué, il existe 4 niveaux d'accessibilité:

- private,

- protected,

- public

- "friendly"

 

Cependant, on parlera d'accéssibilité par rapport à une classe et non à une instance.

Cela signifie par exemple pour private que la visibilité des variables ou méthodes ne s'arrête pas à l'instance de la classe, mais que toutes les instances de cette même classe pourront aussi accéder à ces méthodes ou variables d'une autre instance. Il suffit pour cela de connaître l'instance à viser.

Moi perso., cela me choque, mais c'est comme ça !

Cette remarque sera identique pour protected !

 

Exemple:

Voici une classe TstClass, il y a un mutateur et un accesseur pour manipuler une variable dite "private". Seule solution donc pour mettre à jour ou lire cette variable hors d'une instance de cette classe:

Mais il y a une autre méthode setFrere (ou si vous préférez, vous pouvez aussi la renommer setSoeur, puisque l'on dit une instance !)

Cette méthode reçoit une instance TstClass et une valeur, puis va tenter d'affecter directement la variable privée de cette instance. Pour rappel, cette instance qui exécutera setFrere est elle aussi de classe TstClass.

 

Voici une classe TestPrivate qui va instancier deux classes TstClass:

L'instance 1 s'affecte la valeur 5 dans sa variable privée.

L'instance 2 s'affecte la valeur 6 dans sa variable privée.

L'instance 1 va affecter la valeur 10 dans la variable privée de l'instance 2.

Vous pourriez penser que comme elle est privée, t1 ne pourra pas affectée t2, mais comme vous l'avez compris, l'affichage du contenu des variables donnera:

5 pour t1 et 10 pour t2. t1 a donc pu affecter une variable privée sur t2 sans passer par le mutateur ! Mais ceci est vrai uniquement parce que ces deux instances sont de la même classe à l'origine.