Les modificateurs d’accès

aboun selma
4 min readJan 10, 2019

--

Le concept de modificateur d’accès est utilisé dans le cadre de la programmation orientée objet, i.e une programmation qui consiste en la définition et l’interaction de briques logicielles appelées objets, et qui possède une structure interne et un comportement lui permettant d’interagir avec ses pairs. En effet, les langages de programmation orientés objet tels que Java, Python C, C++, C#, etc. utilisent la notion de classe afin de pouvoir regrouper des membres, méthodes et propriétés communs à un ensemble d’objets.

Mais qu’est-ce qu’un modificateur exactement ?

Un modificateur, qu’on appelle également qualifieur, est un mot clé que l’on ajoute devant l’identificateur d’une classe, ou encore d’une méthode, variable ou interface afin d’en modifier sa signification. Il existe différents types de modificateurs mais nous nous concentrerons sur les modificateurs d’accès. Ce type de modificateur porte bien son nom puisque, lorsque le mot-clé en question est placé devant l’objet, il en modifie ses permissions d’accès et sa visibilité. Sans perte de généralités, nous étudierons ici en particulier les modificateurs en Java.

Il existe donc différentes permissions :

  • Default : Il est appliqué par défaut lors de la définition d’une classe si aucun autre modificateur d’accès n’est précisé. Les variables ou méthodes en default sont accessibles uniquement au sein du même package (un package est comme un dossier dans lequel on rangerait nos classes).
  • Private : ce mot-clé est utilisé pour limiter l’accès aux méthodes et aux variables membres d’une classe. Une variable ou méthode déclarée private est visible seulement dans le corps de sa classe, de sorte qu’aucune autre classe, même si elle appartient au même package, ne peut y accéder. Dans le cas où les autres classes n’ont aucune raison d’utiliser la variable ou si l’accès à cette variable/méthode affecte la sécurité du système, alors on utilise le modificateur d’accès private. En revanche, on peut construire des méthodes publiques au sein d’une même classe qui utilisent des variables privées : ce sont les méthodes d’accès.

Voici un exemple de la variable time déclarée private :

  • Public : ce modificateur d’accès signifie que tout le code peut accéder à la classe, méthode ou variable en question, sans se préoccuper d’où se situe le coder à accéder. Ainsi le code à accéder peut être dans une classe et un package différent sans aucun soucis. Afin de mieux comprendre, élaborons l’exemple précédent en mettant cette fois la variable time publique.

Dans cet exemple, le mot-clé public est placé devant la classe Clock. De ce fait, ClockReader peut accéder à la variable time de Clock, bien qu’elle ne soit pas dans la même classe.

  • Protected : il confère les mêmes autorisations que le mode par défaut à l’exception près que les sous-classes définies dans un autre package peuvent accéder aux classes précédées de protected. Un dernier exemple illustrant bien l’utilisation de ce mot-clé :

On voit ici que la sous-classe SmartClock utilise la variable time (protected) de la classe Clock. Si Clock et SmartClock avaient été dans deux packages différents, le processus resterait valide.

Modificateurs d’accès et hérédité

Il est important de garder en tête le fait que les méthodes d’une sous-classe ne peuvent avoir un modificateur d’accès plus restrictif que celles de la classe dont elle est issue. Ainsi, si une méthode de la superclasse est protected, elle doit être soit protected soit public dans la sous-classe.

Finalement, voici un tableau résumant les différents droits d’accès associé à chaque mot-clé :

Ce qu’il faut retenir :

Le concept d’accessibilité définit la possibilité qu’a le concepteur d’une classe de restreindre l’accès à certaines données, ou plus généralement à certains éléments (méthodes, classes, …). Son intérêt vous l’aurez compris, est donc de pouvoir permettre au concepteur de diffuser son code de la manière dont il le souhaite en restreignant l’accès à (ou bien l’instanciation de) certains éléments en leur associant une étiquette.

Bibliographie :

--

--