Tutoriels Java

Java ACCUEIL Introduction à Java Java Démarrer Syntaxe Java Commentaires Java Variables Java Types de données Java Conversion de type Java Opérateurs Java Chaînes Java Mathématiques Java Booléens Java Java Si... Sinon Commutateur Java Java While Boucle Java pour la boucle Java Pause/Continuer Tableaux Java

Méthodes Java

Méthodes Java Paramètres de méthode Java Surcharge de méthode Java Portée Java Récursivité Java

Cours Java

POO Java Classes/Objets Java Attributs de classe Java Méthodes de classe Java Constructeurs Java Modificateurs Java Encapsulation Java Paquets Java/API Héritage Java Polymorphisme Java Classes internes Java Abstraction Java InterfaceJava Énumérations Java Entrée utilisateur Java Data Java Java ArrayList Liste liée Java Java HashMap Jeu de hachage Java Itérateur Java Classes d'encapsulation Java Exception Java Java RegEx Fils Java Java Lambda

Gestion des fichiers Java

Fichiers Java Java créer/écrire des fichiers Fichiers de lecture Java Java supprimer des fichiers

Comment Java

Additionner deux nombres

Référence Java

Mots clés Java Méthodes de chaîne Java Méthodes mathématiques Java

Exemples Java

Exemples Java Compilateur Java Exercices Java Quizz Java Certificat Java


Encapsulation Java


Encapsulation

La signification d' Encapsulation est de s'assurer que les données "sensibles" sont cachées aux utilisateurs. Pour y parvenir, vous devez :

  • déclarer les variables/attributs de classe comme private
  • fournir des méthodes publiques get et setprivate pour accéder et mettre à jour la valeur d'une variable

Obtenir et définir

Vous avez appris du chapitre précédent que privateles variables ne sont accessibles qu'au sein d'une 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 get et set publiques.

La getméthode renvoie la valeur de la variable et la setméthode définit la valeur.

La syntaxe pour les deux est qu'ils commencent par getou set, suivi du nom de la variable, avec la première lettre en majuscule :

Exemple

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 getméthode renvoie la valeur de la variable name.

La setméthode prend un paramètre ( newName) et l'affecte à la namevariable. Le thismot clé est utilisé pour faire référence à l'objet courant.

Cependant, comme la namevariable est déclarée en tant que private, nous ne pouvons pas y accéder depuis l'extérieur de cette classe :

Exemple

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

Si la variable était déclarée en tant que public, nous attendrions la sortie suivante :

John

Cependant, lorsque nous essayons d'accéder à une privatevariable, nous obtenons une erreur :

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

Au lieu de cela, nous utilisons les méthodes getName()et setName()pour accéder et mettre à jour la variable :

Exemple

public class Main {
  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"


Pourquoi l'encapsulation ?

  • Meilleur contrôle des attributs de classe et des méthodes
  • Les attributs de classe peuvent être rendus en lecture seule (si vous n'utilisez que la getméthode) ou en écriture seule (si vous n'utilisez que la setméthode)
  • Flexible : le programmeur peut modifier une partie du code sans affecter les autres parties
  • Sécurité accrue des données