Différences entre public, protected, package-private et private en Java
En Java, il existe quatre types de modificateurs d’accès : public, protected, package-private (par défaut) et private. Ces modificateurs sont utilisés pour définir le niveau d’accessibilité d’une classe, d’une interface, d’une variable, d’une méthode, d’un constructeur ou d’un membre de données.
1. Public
Le modificateur d’accès public est le plus permissif et permet un accès complet à l’élément qu’il modifie. Une classe, une interface, une méthode ou un membre de données déclaré comme public est accessible à partir de n’importe où dans le programme, que ce soit à l’intérieur de la classe ou du package actuel, ou à partir d’un autre package.
Exemple :
public class MyClass {
public int publicVariable;
public void publicMethod() {
// Code ici
}
}
2. Protected
Le modificateur d’accès protected permet un accès à l’élément qu’il modifie dans la classe elle-même, dans les classes dérivées (sous-classes) et dans le même package. Cependant, il n’est pas accessible à partir d’autres packages.
Exemple :
public class MyClass {
protected int protectedVariable;
protected void protectedMethod() {
// Code ici
}
}
3. Package-Private (Par défaut)
En Java, si aucun modificateur d’accès n’est spécifié, l’élément a un accès package-private (également appelé friendly). Cela signifie que l’élément est accessible uniquement à partir du même package, mais pas à partir d’autres packages.
Exemple :
public class MyClass {
int packageVariable;
void packageMethod() {
// Code ici
}
}
4. Private
Le modificateur d’accès private limite l’accès à l’élément à la classe dans laquelle il est déclaré. Cela signifie que l’élément n’est pas accessible à partir d’autres classes, qu’elles soient dans le même package ou non.
Exemple :
public class MyClass {
private int privateVariable;
private void privateMethod() {
// Code ici
}
}
Dans l’ordre d’accès, du plus permissif au plus restrictif, nous avons : public, protected, package-private et private. Il est important de choisir le modificateur d’accès approprié en fonction des besoins de sécurité et de confidentialité de votre programme.
L’avis de notre rédaction
Les informations fournies par les différentes sources sont cohérentes et détaillées, offrant une bonne compréhension de la différence entre les modificateurs d’accès en Java. Cependant, certaines sources ne mentionnent pas clairement que la visibilité package-private est le niveau d’accès par défaut lorsqu’aucun modificateur n’est spécifié.
Pour combler cette lacune, voici une explication claire : en Java, si vous ne spécifiez pas de modificateur d’accès, la visibilité de l’élément est limitée au package dans lequel il est déclaré. Cela signifie que l’élément est accessible uniquement à partir des autres classes du même package, mais pas à partir d’autres packages.