Explication des modificateurs d'accès dans Java

Que sont les modificateurs d'accès?

Avez-vous déjà voulu définir comment les gens accéderaient à certaines de vos propriétés? Vous ne voudriez pas que quiconque utilise vos sous-vêtements. Cependant, vos amis proches et vos proches peuvent utiliser votre pull et peut-être votre voiture.

De la même manière que vous définissez un niveau d'accès à vos positions, Java contrôle également l'accès. Vous souhaitez définir le niveau d'accès pour les variables, méthodes et classes en fonction des autres classes auxquelles vous souhaitez y accéder.

Java fournit 4 niveaux de modificateurs d'accès. Cela signifie que vous pouvez modifier l'accès à une variable, une méthode ou une classe de 4 manières. Ces 4 méthodes sont privées, publiques, protégées et par défaut.

Ces modificateurs d'accès peuvent être appliqués aux champs, méthodes et classes (les classes sont un cas particulier, nous les examinerons à la fin de cet article). Voici un bref aperçu1 de ce que Access Levelssont pour chacun Access Modifier:

Référence du tableau des modificateurs d'accès:

Tableau des modificateurs d'accès

Modificateur d'accès privé

Permet d'accéder à une variable ou à une méthode uniquement dans la classe dans laquelle elle a été créée. Aucune autre classe au-delà de la classe qui a créé la variable ou la méthode ne peut y accéder. Ceci est étroitement similaire à vos organes internes. Ils ne sont accessibles qu'au propriétaire. Pour rendre une variable ou une méthode privée, il vous suffit d'ajouter le mot-clé private avant le type de variable ou de méthode. Utilisons private dans un exemple de codage. Si une banque veut fournir un taux d'intérêt de 10% sur ses prêts, elle s'assurera que la variable de taux d'intérêt (supposons int int_rate;) resterait privée afin qu'aucune autre classe n'essaie d'y accéder et de la modifier. Par exemple;

private String name;

L'exemple ci-dessus crée une variable appelée nom et garantit qu'elle n'est accessible que dans la classe à partir de laquelle elle a été créée.

Un autre exemple de méthode est

private void setAge(){ System.out.println("Set Age"); }

L'exemple ci-dessus garantit que la méthode setAge n'est accessible que dans la classe à partir de laquelle elle a été créée et nulle part ailleurs.

Modificateur d'accès public

Le modificateur d'accès public est l'opposé direct du modificateur d'accès privé. Une classe, une méthode ou une variable peut être déclarée comme publique et cela signifie qu'elle est accessible depuis n'importe quelle classe. Le modificateur d'accès public peut être comparé à une école publique où tout le monde peut demander à être admis et être admis.

Une classe, une méthode ou une variable publique est accessible à tout moment depuis n'importe quelle autre classe.

Par exemple, pour déclarer une classe comme publique, tout ce dont vous avez besoin est:

public class Animal{ }

En tant que telle, la classe Animal est accessible par n'importe quelle autre classe.

public int age; public int getAge(){ }

Ci-dessus se trouvent des façons de spécifier une variable et une méthode comme public.

Le modificateur d'accès par défaut

Le modificateur d'accès par défaut est différent de tous les autres modificateurs d'accès en ce qu'il n'a pas de mot-clé. Pour utiliser le modificateur d'accès par défaut, vous n'utilisez simplement aucun des autres modificateurs d'accès et cela signifie simplement que vous utilisez un modificateur d'accès par défaut.

Par exemple, pour utiliser le modificateur d'accès par défaut pour une classe, vous utilisez

class Bird{ }

Cela signifie essentiellement que vous utilisez le modificateur d'accès par défaut. Le modificateur d'accès par défaut permet à une variable, une méthode ou une classe d'être accessible par d'autres classes dans le même package. Un package est une collection de classes associées dans un répertoire de fichiers. Pour plus d'informations sur les packages, consultez la section sur les packages.

Toute variable, méthode ou classe déclarée pour utiliser le modificateur d'accès par défaut ne peut être accédée par aucune autre classe en dehors du package à partir duquel elle a été déclarée.

int age; void setNewAge(){ }

Vous trouverez ci-dessus quelques façons d'utiliser le modificateur d'accès par défaut pour une variable ou une méthode. N'oubliez pas que le modificateur d'accès par défaut n'a pas de mot clé. L'absence des 3 autres modificateurs d'accès signifie que vous utilisez le modificateur d'accès par défaut.

Modificateur d'accès protégé

Le modificateur d'accès protégé est étroitement lié au modificateur d'accès par défaut. Le modificateur d'accès protégé a les propriétés du modificateur d'accès par défaut, mais avec une petite amélioration.

Une variable et une méthode sont les seules à utiliser le modificateur d'accès protégé. La petite amélioration est qu'une classe en dehors du package de classe à partir duquel la variable ou la méthode a été déclarée peut accéder à ladite variable ou méthode. Cependant, cela n'est possible que s'il hérite de la classe.

La classe d'un autre package qui peut voir les variables ou méthodes protégées doit avoir étendu la classe qui a créé les variables ou méthodes.

Notez que sans l'avantage de l'héritage, un modificateur d'accès par défaut a exactement le même accès qu'un modificateur d'accès protégé.

Des exemples d'utilisation du modificateur d'accès protégé sont présentés ci-dessous:

protected int age; protected String getName(){ return "My Name is You"; }

Accéder aux modificateurs sur les classes

Par défaut, les classes ne peuvent avoir que 2 modificateurs:

  • Publique
  • pas de modificateur (modificateur par défaut)

Cela signifie donc que les classes ne peuvent jamais être définies sur privateou protected?

C'est logique, pourquoi voudriez-vous faire un cours privé? Aucune autre classe ne pourrait l'utiliser. Mais parfois, vous pouvez intégrer une classe dans une autre classe. Ces classes spéciales inner classes, peuvent être définies sur private ou protected afin que seule sa classe environnante puisse y accéder:

public class Car { private String brand; private Engine engine; // ... private class Engine { // ... } }

Dans l'exemple ci-dessus, seule la Carclasse peut utiliser la Engineclasse. Cela peut être utile dans certains cas.

Les autres classes ne peuvent jamais être définies sur protectedou private, car cela n'a aucun sens. Le protectedmodificateur d'accès est utilisé pour faire des choses package-privatemais avec l'option d'être accessible aux sous-classes. Il n'y a pas de concept tel que «sous-packages» ou «héritage de package» en java.