English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Java

Contrôle de flux Java

Java Tableau

Java Programmation orientée objet (I)

Java Programmation orientée objet (II)

Java Programmation orientée objet (III)

Gestion des exceptions Java

Java List

Java Queue (file d'attente)

Java Map collection

Java Set collection

Java Entrée/Sortie (I/O)

Java Reader/Writer

Autres sujets Java

Encapsulation Java

Dans ce tutoriel, vous apprendrez l'encapsulation et le masquage des données en Java à l'aide d'exemples.

Encapsulation Java

L'encapsulation est l'une des fonctionnalités importantes de la programmation orientée objet. L'encapsulation signifie lier les champs et les méthodes dans une seule classe.

Regrouper les champs et les méthodes similaires dans une classe aide également à masquer les données.

Encapsulation des champs et des méthodes

Généralement, l'encapsulation est le processus de regroupement du code similaire dans un endroit.

En Java, nous pouvons regrouper les champs et les méthodes qui sont opérés ensemble dans une seule classe. Par exemple,

class Rectangle {
   int length;
   int breadth;
   public void getArea() {}
}

Dans le programme ci-dessus, la méthode getArea() calcule la surface du rectangle. Pour calculer la surface, il a besoin de la longueur (length) et de la largeur (breadth). Par conséquent, les champs de données length, breadth et la méthode getArea() sont placés dans la classe Rectangle.

Masquage des données Java

Le masquage des données est une méthode pour limiter l'accès aux membres de données en masquant les détails d'implémentation.

L'encapsulation offre également une méthode pour masquer les données.

La masquage des données peut être réalisé par les modificateurs d'accès. En Java, il y a quatre modificateurs d'accès :

  • public - Les attributs ou méthodes marqués sont publics et peuvent être accédés partout, par défaut, tous les attributs et méthodes sont public

  • private - Les attributs ou méthodes marqués sont privés et ne peuvent pas être accédés à l'extérieur de la classe où ils sont déclarés

  • protected - Les attributs ou méthodes modifiés par protected sont protégés, ils sont similaires à private, mais ils sont également accessibles dans les sous-classes

  • default - C'est-à-dire sans aucun modificateur d'accès, généralement appelé "mode d'accès par défaut". Dans ce mode, l'accès est autorisé uniquement dans le même paquet.

Pour plus d'informations, veuillez consulterModificateurs Java

Exemple1:Utilisation de la dissimulation de données privées

class Person {
   private int age;
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
}
class Main {
   public static void main(String[] args) {
      Person p1 = new Person();
      p1.setAge(24);
      System.out.println("Mon âge est ", + p1.getAge());
   }
}

Résultat de la sortie

Mon âge est 24

Dans cet exemple, nous avons un champ privé age. Comme il est privé, il ne peut pas être accédé depuis l'extérieur de la classe. Pour accéder à age, nous avons utilisé les méthodes publiques getAge() et setAge(). Ces méthodes sont appelées méthodes getter et setter.

Si vous essayez d'accéder au champ age depuis la classe Main, un message d'erreur apparaîtra.

p1.age = 24;     // error: age a un accès privé dans Person

Définir age comme privé peut limiter l'accès non autorisé depuis l'extérieur de la classe. C'est la dissimulation de données.

Exemple2:Utilisation de la dissimulation de données protégées

class Person {
 protected String profession;
 protected void displayInfo() {
   System.out.println("I am a ", + profession);
 }
}
class Teacher extends Person {
   public static void main(String[] args) {
      Teacher t1 = new Teacher();
      t1.profession = "teacher";
      t1.displayInfo();
   }
}

Résultat de la sortie

I am a teacher

Dans le programme ci-dessus, nous avons créé une classe Person contenant un champ protégé profession et une méthode protégée displayInfo().

Nous avons accédé à ces membres à partir de la classe Teacher (sous-classe de Person).

Pourquoi utiliser l'encapsulation ?

  • En Java, l'encapsulation peut nous aider à garder ensemble les champs et les méthodes pertinents, rendant ainsi notre code plus ordonné et plus facile à lire.

  • It helps to control the modification of our data fields. Consider a situation where we want the age field in the class to be a non-negative number. Here, we can set age to private and apply logic within the setAge() method. For example,

class Person {
   private int age;
   public void setAge(int age) {
     if (age >= 0) {
        this.age = age;
     }
   }
}
  • Getter and setter methods provide read-only or write-only access to our class fields. For example,

getName()   // Provide read-only access
setName()   //Provide write-only access
  • It helps to decouple the components of the system. These decoupled components can be developed, tested, and debugged independently and simultaneously. And any changes to a specific component will not have any impact on other components.

Data hiding and encapsulation

People usually think that encapsulation is data hiding, but this is not entirely correct.

Encapsulation refers to binding related fields and methods together.This allows us to achieve data hiding.Encapsulation itself is not data hiding.