Java fournit un certain nombre de modificateurs d’accès pour définir les niveaux d’accès pour les classes, les variables, les méthodes et les constructeurs. Les quatre niveaux d’accès sont –
- Visibles par le paquet, la valeur par défaut. Pas de modificateurs sont nécessaires.
- Visible uniquement pour la classe (privé).
- Visible au monde (public).
- Visible pour le paquet et toutes les sous-classes (protégées).,
Modificateur d’accès par défaut – Pas de mot clé
Le modificateur d’accès par défaut signifie que nous ne déclarons pas explicitement un modificateur d’accès pour une classe, un champ, une méthode, etc.
Une variable ou une méthode déclarée sans aucun modificateur de contrôle d’accès est disponible pour toute autre classe du même paquet. Les champs de l’interface sont implicitement public static final et les méthodes d’une interface sont par défaut public.,
Exemple
Les variables et les méthodes peuvent être déclarées sans aucun modificateur, comme dans les exemples suivants −
String version = "1.5.1";boolean processOrder() { return true;}
Private Access Modificateur – Private
Les méthodes, les variables et les constructeurs déclarés privés ne sont accessibles que dans la classe déclarée elle-même.
modificateur d’accès Privé est le plus restrictif niveau d’accès. La classe et les interfaces ne peuvent pas être privées.
Les variables déclarées privées sont accessibles en dehors de la classe, si des méthodes getter publiques sont présentes dans la classe.,
L’utilisation du modificateur privé est le principal moyen pour un objet de s’encapsuler et de masquer les données du monde extérieur.
Exemple
La classe suivante utilise le contrôle d’accès privé −
Ici, la variable de format de la classe Logger est privée, donc il n’y a aucun moyen pour les autres classes de récupérer ou de définir directement sa valeur.
Donc, pour rendre cette variable disponible au monde extérieur, nous avons défini deux méthodes publiques: getFormat(), qui renvoie la valeur de format, et setFormat(String), qui définit sa valeur.,
Modificateur d’Accès Public – Public
Une classe, une méthode, constructeur, interface, etc. public déclaré est accessible depuis n’importe quelle autre classe. Par conséquent, les champs, méthodes, blocs déclarés dans une classe publique sont accessibles à partir de n’importe quelle classe appartenant à l’univers Java.
Cependant, si la classe publique à laquelle nous essayons d’accéder se trouve dans un paquet différent, la classe publique doit toujours être importée. En raison de l’héritage de classe, toutes les méthodes et variables publiques d’une classe sont héritées par ses sous-classes.,
Exemple
voici la fonction publique, le contrôle d’accès
public static void main(String arguments) { // ...}
La méthode main() de la demande doit être public. Sinon, il ne pourrait pas être appelé par un interpréteur Java (tel que java) pour exécuter la classe.
Protected Access Modificateur – Protected
Les variables, méthodes et constructeurs déclarés protégés dans une superclasse ne sont accessibles que par les sous-classes d’un autre paquet ou par toute classe du paquet de la classe des membres protégés.
Le modificateur d’accès protégé ne peut pas être appliqué à la classe et aux interfaces., Les méthodes et les champs peuvent être déclarés protégés, mais les méthodes et les champs d’une interface ne peuvent pas être déclarés protégés.
L’accès protégé donne à la sous-classe une chance d’utiliser la méthode ou la variable d’assistance, tout en empêchant une classe non liée d’essayer de l’utiliser.
Exemple
La classe parent suivante utilise protected access control, pour permettre à sa classe enfant de remplacer la méthode openSpeaker () −
class AudioPlayer { protected boolean openSpeaker(Speaker sp) { // implementation details }}class StreamingAudioPlayer extends AudioPlayer { boolean openSpeaker(Speaker sp) { // implementation details }}
Ici, si nous définissons la méthode openSpeaker() comme privée, alors elle ne serait accessible depuis aucune autre classe que AudioPlayer., Si nous le définissons comme public, alors il deviendrait accessible à tout le monde extérieur. Mais notre intention est d’exposer cette méthode à ses sous-classe seulement, c’est pourquoi nous avons utilisé protégé modificateur.
Contrôle d’accès et héritage
Les règles suivantes pour les méthodes héritées sont appliquées −
-
Les méthodes déclarées publiques dans une superclasse doivent également être publiques dans toutes les sous-classes.
-
Les méthodes déclarées protégées dans une superclasse doivent être protégées ou publiques dans des sous-classes; elles ne peuvent pas être privées.,
-
Les méthodes professées privées ne sont pas héritées du tout, il n’y a donc pas de règle pour elles.