Programmation Java/Encapsulation
En Java, comme dans beaucoup de langages orientés objet, les classes, les attributs et les méthodes bénéficient de niveaux d'accessibilité, qui indiquent dans quelles circonstances on peut accéder à ces éléments.
Ces niveaux sont au nombre de 4, correspondant à 3 mots-clés utilisés comme modificateurs : private, protected et public. La quatrième possibilité est de ne pas spécifier de modificateur (comportement par défaut).
Les sections suivantes décrivent les modificateurs du plus restrictif au moins restrictif. Chaque modificateur moins restrictif que le précédent ajoute une nouvelle possibilité d'accès.
Modificateur "private"
modifierUn attribut ou une méthode déclarée "private" n'est accessible que depuis l'intérieur de la même classe.
Comportement par défaut (paquetage)
modifierSi aucun modificateur n'est indiqué, l'élément n'est accessible que depuis les classes faisant partie du même paquetage (package).
Exemple :
package org.wikibooks.fr.temps;
class Horloge
{
// corps de la classe
}
public class Calendrier
{
void ajouteJour()
{
// corps de la methode
}
int mois;
// suite de la classe
}
La classe Horloge, la méthode ajouteJour et l'attribut mois ne sont accessibles que depuis les classes faisant partie du package org.wikibooks.fr.temps.
Modificateur "protected"
modifierUn attribut ou une méthode déclarée "protected" est accessible uniquement aux classes d'un package et à ses sous-classes même si elles sont définies dans un package différent.
Si la classe qui accède au membre est dans un paquetage différent, elle doit être une sous-classe de la classe définissant le membre accédé.
Toutefois, elle ne peut le faire que pour la référence this
ou super
; elle ne peut pas accéder au membre d'un autre objet.
Exemple :
package org.wikibooks.fr.transport; public class Vehicule { protected int kilometrage = 0; }
package org.wikibooks.fr.transport.route; public class Voiture extends Vehicule { public boolean estPlusUtiliséeQue(Voiture autre) { return this.kilometrage > autre.kilometrage; // ^ OK ^ Erreur } }
Modificateur "public"
modifierUne classe, un attribut ou une méthode déclarée "public" est visible par toutes les classes et les méthodes.
En résumé
modifierLe tableau résume les différents mode d'accès des membres d'une classe.
Modificateur du membre | private
|
aucun | protected
|
public
|
---|---|---|---|---|
Accès depuis la classe | Oui | Oui | Oui | Oui |
Accès depuis une classe du même package
|
Non | Oui | Oui | Oui |
Accès depuis une sous-classe | Non | Non | Oui | Oui |
Accès depuis toute autre classe | Non | Non | Non | Oui |