Encapsulation Java expliquée : Masquage sécurisé des données et contrôle
L'encapsulation est l'un des quatre piliers de la POO (avec héritage, polymorphisme, abstraction).
En Java, c'est le regroupement des données (variables) et du code agissant sur ces données (méthodes) en une seule unité. Les variables sont cachées (private) et accessibles uniquement via des méthodes publiques (getters/setters). C'est aussi appelé masquage de données (data hiding).
Comment réaliser l'encapsulation
- Déclarer les variables
private - Fournir des méthodes
publicgetXxx()etsetXxx()pour lire/modifier
Exemple complet
/* EncapTest.java */
public class EncapTest {
private String name;
private String idNum;
private int age;
public int getAge() { return age; }
public String getName() { return name; }
public String getIdNum() { return idNum; }
public void setAge(int newAge) { age = newAge; }
public void setName(String newName) { name = newName; }
public void setIdNum(String newId) { idNum = newId; }
}
Les méthodes setXxx() et getXxx() sont les points d'accès aux variables. Toute classe voulant accéder aux variables doit passer par ces accesseurs/mutateurs.
Utilisation
/* RunEncap.java */
public class RunEncap {
public static void main(String args[]) {
EncapTest encap = new EncapTest();
encap.setName("James");
encap.setAge(20);
encap.setIdNum("12343ms");
System.out.println("Nom : " + encap.getName() + " Âge : " + encap.getAge());
}
}
Résultat : Nom : James Âge : 20
Avantages de l'encapsulation
- Champs en lecture seule ou écriture seule : omettre le setter ou le getter
- Contrôle total : la classe valide/modifie les valeurs avant stockage (ex: âge ≥ 0, format ID, etc.)
- Maintenabilité : changement d'implémentation interne sans casser le code client
- Sécurité : protection contre les mises à jour invalides ou malveillantes
Exemple avec validation
public class EncapTest {
private int age;
public int getAge() { return age; }
public void setAge(int newAge) {
if (newAge > 0 && newAge < 150) {
age = newAge;
} else {
throw new IllegalArgumentException("Âge invalide : " + newAge);
}
}
}
Java
- Comprendre le mot-clé final en Java : variables, méthodes et classes
- L'opérateur instanceof en Java : guide complet
- Maîtriser l'encapsulation Java : guide pratique pour le masquage de données
- Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
- Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
- Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
- Maîtriser les génériques Java : Construire du code réutilisable et type-safe