Encapsulation La signification de l’encapsulation est de s’assurer que les données "sensibles" sont cachées des utilisateurs. Pour y parvenir, vous devez: déclarer les variables / attributs de classe comme privés (accessibles uniquement dans la même classe) fournit des méthodes de définition et de lecture publiques permettant d'accéder à la valeur d'une variable privée et de la mettre à jour Get et Set Vous avez appris dans le chapitre précédent que les variables privées ne sont accessibles que dans la même classe (une classe extérieure n'y a pas accès). Cependant, il est possible d'y accéder si nous fournissons des méthodes de lecture et de définition publiques. La méthode get renvoie la valeur de la variable et la méthode set la définit. La syntaxe pour les deux est qu'ils commencent par get ou set, suivi du nom de la variable, avec la première lettre en majuscule: Exemple Code: public class Person { private String name; // private = restricted access // Getter public String getName() { return name; } // Setter public void setName(String newName) { this.name = newName; } } Exemple expliqué La méthode get renvoie la valeur du nom de la variable. La méthode set prend un paramètre (newName) et l'assigne à la variable name. Le mot-clé this est utilisé pour faire référence à l'objet actuel. Cependant, comme la variable de nom est déclarée privée, nous ne pouvons pas y accéder de l'extérieur de cette classe: Exemple Code: public class MyClass { public static void main(String[] args) { Person myObj = new Person(); myObj.name = "John"; // error System.out.println(myObj.name); // error } } Code: /* Code from filename: Person.java public class Person { private String name; // Getter public String getName() { return name; } // Setter public void setName(String newName) { this.name = newName; } } */ public class MyClass { public static void main(String[] args) { Person myObj = new Person(); myObj.name = "John"; System.out.println(myObj.name); } } Si la variable a été déclarée comme publique, nous nous attendrions à la sortie suivante: Code: John Cependant, lorsque nous essayons d'accéder à une variable privée, nous obtenons une erreur: Code: MyClass.java:4: error: name has private access in Person myObj.name = "John"; ^ MyClass.java:5: error: name has private access in Person System.out.println(myObj.name); ^ 2 errors À la place, nous utilisons les méthodes getName () et setName () pour accéder à la variable et la mettre à jour: Exemple Code: public class MyClass { public static void main(String[] args) { Person myObj = new Person(); myObj.setName("John"); // Set the value of the name variable to "John" System.out.println(myObj.getName()); } } // Outputs "John" Code: /* Code from filename: Person.java public class Person { private String name; // Getter public String getName() { return name; } // Setter public void setName(String newName) { this.name = newName; } } */ public class MyClass { public static void main(String[ ] args) { Person myObj = new Person(); myObj.setName("John"); System.out.println(myObj.getName()); } } Pourquoi encapsulation? Meilleur contrôle des attributs et méthodes de classe Les variables de classe peuvent être rendues en lecture seule (si vous omettez la méthode set) ou en écriture seule (si vous omettez la méthode get) Flexible: le programmeur peut modifier une partie du code sans affecter les autres parties Sécurité accrue des données