logo

Modificateurs d'accès en Java

En Java, les modificateurs d'accès sont des outils essentiels qui définissent comment les membres d'une classe comme les méthodes de variables et même la classe elle-même sont accessibles à partir d'autres parties de notre programme.

Il existe 4 types de modificateurs d'accès disponibles en Java : 

Modificateurs d'accès en Java-1' title=Modificateurs d'accès en Java

Modificateur d'accès privé

Le modificateur d'accès privé est spécifié à l'aide du mot-clé private. Les méthodes ou données membres déclarées comme privées ne sont accessibles que dans la classe dans laquelle elles sont déclarées.



Java
class Person {  // private variable  private String name;  public void setName(String name) {  this.name = name; // accessible within class  }  public String getName() { return name; } } public class Geeks {  public static void main(String[] args)  {  Person p = new Person();  p.setName('Alice');  // System.out.println(p.name); // Error: 'name'  // has private access  System.out.println(p.getName());  } } 

Sortir
Alice 

Explication: L’accès direct au nom n’est pas autorisé en dehors de la personne appliquant l’encapsulation.

Modificateur d'accès par défaut

Lorsqu'aucun modificateur d'accès n'est spécifié pour une méthode de classe ou un membre de données, il est dit qu'il a le modificateur d'accès par défaut. Cela signifie que seules les classes du même package peuvent y accéder.

Java
class Car {  String model; // default access } public class Main {    public static void main(String[] args){    Car c = new Car();  c.model = 'Tesla'; // accessible within the same package  System.out.println(c.model);  } } 

Sortir
Tesla 

Explication: Les membres avec un accès par défaut ne sont pas accessibles à partir des classes d’un autre package.

Geeks.java : Classe par défaut dans le même package

Java
// default access modifier  package p1;  // Class Geek is having  // Default access modifier  class Geek  {   void display()   {   System.out.println('Hello World!');   }  } 

GeeksNew.java : Classe par défaut d'un package différent (pour le contraste)

C++
// package with default modifier  package p2;  import p1.*; // importing package p1 // This class is having  // default access modifier  class GeekNew {   public static void main(String args[]) {     // Accessing class Geek from package p1   Geek o = new Geek();   o.display();   }  } 

Explication:  Dans cet exemple, le programme affichera l'erreur de compilation lorsque nous essaierons d'accéder à une classe de modificateur par défaut à partir d'un autre package.

Modificateur d'accès protégé

Le modificateur d'accès protégé est spécifié à l'aide du mot-clé protégé. Les méthodes ou données membres déclarées comme protégées sont accessibles au sein du même package ou des sous-classes de différents packages.

Java
class Vehicle {  protected int speed; // protected member } class Bike extends Vehicle {  void setSpeed(int s)  {  speed = s; // accessible in subclass  }  int getSpeed()  {  return speed; // accessible in subclass  } } public class Main {  public static void main(String[] args){    Bike b = new Bike();  b.setSpeed(100);  System.out.println('Access via subclass method: '  + b.getSpeed());  Vehicle v = new Vehicle();  System.out.println(v.speed);  } } 

Sortir
Access via subclass method: 100 0 

Explication: la vitesse est accessible via les méthodes de sous-classe et d'autres classes du même package, mais l'accès direct à partir d'un package différent (non-sous-classe) échouerait.

Modificateur d'accès public

Le modificateur d'accès public est spécifié à l'aide du mot-clé public. Les membres publics sont accessibles de partout dans le programme. Il n’y a aucune restriction quant à la portée des données publiques membres.

Java
class MathUtils {     public static int add(int a int b) {  return a + b;  } } public class Main {    public static void main(String[] args) {    System.out.println(MathUtils.add(5 10)); // accessible anywhere  } } 

Sortir
15 

Explication: add() est accessible globalement grâce au modificateur public.

Les classes ou interfaces de niveau supérieur ne peuvent pas être déclarées comme privées car privé signifie « uniquement visible dans la classe englobante ».

Tableau de comparaison des modificateurs d'accès en Java

même_classe' loading='lazy' title=Modificateur d'accès

Quand utiliser chaque modificateur d'accès dans des projets du monde réel

  • Privé: L'idée devrait être d'utiliser un accès aussi restrictif que possible afin que le privé soit utilisé autant que possible.
  • Défaut (Package-Private) : souvent utilisé dans les utilitaires ou les classes d'assistance au niveau du package.
  • Protégé: Couramment utilisé dans les conceptions basées sur l'héritage comme les extensions de framework.
  • Publique : Ceci est utilisé pour les classes de services de points de terminaison d'API ou les méthodes utilitaires partagées entre différentes parties d'une application.


Créer un quiz