En Java, il existe quatre niveaux de protection ou de visibilité pour les membres (attributs et méthodes) d'une classe, qui déterminent où et comment ils peuvent être accessibles. Voici les différents niveaux de visibilité :
private
(Privé)Accès : Les membres marqués comme private
ne sont accessibles que dans la classe où ils sont déclarés.
Utilisation : Ce niveau de visibilité est utilisé pour protéger les données et méthodes internes à la classe, afin qu'elles ne puissent pas être modifiées ou appelées directement depuis d'autres classes. Il encourage l'encapsulation.
Exemple :
public class MaClasse {
private int valeur; // Accessible uniquement à l'intérieur de MaClasse
private void afficherValeur() { // Accessible uniquement à l'intérieur de MaClasse
System.out.println(valeur);
}
}
default
(Pas de modificateur, visibilité "package-private")Accès : Si un membre de classe n'a pas de modificateur de visibilité explicite (ni private
, ni protected
, ni public
), il est dit package-private ou par défaut. Il est accessible uniquement aux classes dans le même package.
Utilisation : Ce niveau est utilisé lorsqu'il est souhaitable de limiter l'accès aux classes qui sont dans le même package.
Exemple :
public class MaClasse {
int valeur; // Accessible aux classes dans le même package
void afficherValeur() { // Accessible aux classes dans le même package
System.out.println(valeur);
}
}
protected
(Protégé)Accès : Un membre protected
est accessible :
default
).Utilisation : Le modificateur protected
est utilisé lorsque vous souhaitez permettre aux sous-classes d'accéder aux membres, tout en limitant l'accès depuis d'autres classes extérieures au package.
Exemple :
public class MaClasse {
protected int valeur; // Accessible aux sous-classes et classes du même package
protected void afficherValeur() { // Accessible aux sous-classes et classes du même package
System.out.println(valeur);
}
}
public
(Public)public
sont accessibles de partout, que ce soit dans la classe où ils sont déclarés, dans d'autres classes du même package, ou dans des classes d'autres packages.