Encapsulation en Java est un processus consistant à regrouper le code et les données en une seule unité , par exemple, une capsule contenant un mélange de plusieurs médicaments.
Nous pouvons créer une classe entièrement encapsulée en Java en rendant privées toutes les données membres de la classe. Nous pouvons maintenant utiliser les méthodes setter et getter pour définir et obtenir les données qu'il contient.
Le Haricots Java class est l’exemple d’une classe entièrement encapsulée.
Avantage de l'encapsulation en Java
En fournissant uniquement une méthode setter ou getter, vous pouvez rendre la classe en lecture seule ou en écriture seule . En d’autres termes, vous pouvez ignorer les méthodes getter ou setter.
Il vous fournit le contrôle sur les données . Supposons que vous souhaitiez définir la valeur de id qui doit être supérieure à 100 uniquement, vous pouvez écrire la logique dans la méthode setter. Vous pouvez écrire la logique pour ne pas stocker les nombres négatifs dans les méthodes setter.
C'est un moyen d'atteindre masquage des données en Java car les autres classes ne pourront pas accéder aux données via les membres de données privées.
La classe encapsulate est facile à tester . C’est donc mieux pour les tests unitaires.
Les IDE standard fournissent la possibilité de générer les getters et setters. Donc c'est facile et rapide pour créer une classe encapsulée en Java.
Exemple simple d'encapsulation en Java
Voyons l'exemple simple d'une encapsulation qui n'a qu'un seul champ avec ses méthodes setter et getter.
Fichier : Étudiant.java
//A Java class which is a fully encapsulated class. //It has a private data member and getter and setter methods. package com.javatpoint; public class Student{ //private data member private String name; //getter method for name public String getName(){ return name; } //setter method for name public void setName(String name){ this.name=name } }
Fichier : Test.java
//A Java class to test the encapsulated class. package com.javatpoint; class Test{ public static void main(String[] args){ //creating instance of the encapsulated class Student s=new Student(); //setting value in the name member s.setName('vijay'); //getting value of the name member System.out.println(s.getName()); } }
Compile By: javac -d . Test.java Run By: java com.javatpoint.Test
Sortir:
vijay
Classe en lecture seule
//A Java class which has only getter methods. public class Student{ //private data member private String college='AKG'; //getter method for college public String getCollege(){ return college; } }
Désormais, vous ne pouvez pas modifier la valeur du membre de données universitaire qui est « AKG ».
s.setCollege('KITE');//will render compile time error
Classe en écriture seule
//A Java class which has only setter methods. public class Student{ //private data member private String college; //getter method for college public void setCollege(String college){ this.college=college; } }
Désormais, vous ne pouvez pas obtenir la valeur du collège, vous pouvez uniquement modifier la valeur des données membres du collège.
System.out.println(s.getCollege());//Compile Time Error, because there is no such method System.out.println(s.college);//Compile Time Error, because the college data member is private. //So, it can't be accessed from outside the class
Un autre exemple d'encapsulation en Java
Voyons un autre exemple d'encapsulation qui n'a que quatre champs avec ses méthodes setter et getter.
Fichier : Compte.java
//A Account class which is a fully encapsulated class. //It has a private data member and getter and setter methods. class Account { //private data members private long acc_no; private String name,email; private float amount; //public getter and setter methods public long getAcc_no() { return acc_no; } public void setAcc_no(long acc_no) { this.acc_no = acc_no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public float getAmount() { return amount; } public void setAmount(float amount) { this.amount = amount; } }
Fichier : TestAccount.java
//A Java class to test the encapsulated class Account. public class TestEncapsulation { public static void main(String[] args) { //creating instance of Account class Account acc=new Account(); //setting values through setter methods acc.setAcc_no(7560504000L); acc.setName('Sonoo Jaiswal'); acc.setEmail('[email protected]'); acc.setAmount(500000f); //getting values through getter methods System.out.println(acc.getAcc_no()+' '+acc.getName()+' '+acc.getEmail()+' '+acc.getAmount()); } }Testez-le maintenant
Sortir:
7560504000 Sonoo Jaiswal [email protected] 500000.0