Encapsulation Java

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

Encapsulation Java

L'encapsulation est l'une des principales caractéristiques de la programmation orientée objet. L'encapsulation fait référence au regroupement de champs et de méthodes dans une seule classe.

Il empêche les classes externes d'accéder aux champs et méthodes d'une classe et de les modifier. Cela aide également à masquer les données .

Exemple 1: Encapsulation Java

 class Area ( // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) ( this.length = length; this.breadth = breadth; ) // method to calculate area public void getArea() ( int area = length * breadth; System.out.println("Area: " + area); ) ) class Main ( public static void main(String() args) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )

Production

 Superficie: 30

Dans l'exemple ci-dessus, nous avons créé une classe nommée Area. Le but principal de cette classe est de calculer la superficie.

Pour calculer une zone, nous avons besoin de deux variables: la longueur et la largeur et une méthode: getArea(). Par conséquent, nous avons regroupé ces champs et méthodes dans une seule classe.

Ici, les champs et les méthodes sont également accessibles à partir d'autres classes. Par conséquent, il ne s'agit pas de masquer des données .

Ce n'est que de l' encapsulation . Nous conservons simplement des codes similaires ensemble.

Remarque : les gens considèrent souvent l'encapsulation comme un masquage de données, mais ce n'est pas tout à fait vrai.

L'encapsulation fait référence au regroupement de champs et de méthodes connexes. Cela peut être utilisé pour masquer les données. L'encapsulation en soi ne cache pas les données.

Pourquoi l'encapsulation?

  • En Java, l'encapsulation nous aide à conserver les champs et méthodes associés ensemble, ce qui rend notre code plus propre et facile à lire.
  • Cela permet de contrôler les valeurs de nos champs de données. Par exemple,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Ici, nous créons la variable age privateet appliquons la logique à l'intérieur de la setAge()méthode. Maintenant, l'âge ne peut pas être négatif.
  • Les méthodes getter et setter fournissent un accès en lecture seule ou en écriture seule à nos champs de classe. Par exemple,
     getName() // provides read-only access setName() // provides write-only access
  • Il aide à découpler les composants d'un système. Par exemple, nous pouvons encapsuler du code dans plusieurs bundles.
    Ces composants découplés (bundle) peuvent être développés, testés et débogués indépendamment et simultanément. De plus, toute modification d'un composant particulier n'a aucun effet sur les autres composants.
  • Nous pouvons également réaliser le masquage des données en utilisant l'encapsulation. Dans l'exemple ci-dessus, si nous changeons la variable de longueur et de largeur en privé, l'accès à ces champs est restreint.
    Et, ils sont tenus cachés des classes extérieures. C'est ce qu'on appelle le masquage des données .

Masquage des données

Le masquage des données est un moyen de restreindre l'accès de nos données membres en masquant les détails de mise en œuvre. L'encapsulation fournit également un moyen de masquer les données.

Nous pouvons utiliser des modificateurs d'accès pour masquer les données. Par exemple,

Exemple 2: masquage des données à l'aide du spécificateur privé

 class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )

Production

 Mon âge a 24 ans

Dans l'exemple ci-dessus, nous avons un privateâge de champ. Comme c'est le cas private, il n'est pas accessible depuis l'extérieur de la classe.

Pour accéder à age, nous avons utilisé des publicméthodes: getAge()et setAge(). Ces méthodes sont appelées méthodes getter et setter.

Rendre l'âge privé nous a permis de restreindre l'accès non autorisé depuis l'extérieur de la classe. C'est du masquage des données .

Si nous essayons d'accéder au champ age depuis la classe Main, nous obtiendrons une erreur.

 // error: age has private access in Person p1.age = 24;

Articles intéressants...