Java - Encapsulation
Encapsulation est l'un des quatre concepts fondamentaux de la POO. Les trois autres sont l'héritage, le polymorphisme et l'abstraction.
L'encapsulation en Java est un mécanisme d'encapsulation des données (variables) et du code agissant sur les données (méthodes) en une seule unité. Dans l'encapsulation, les variables d'une classe seront cachées des autres classes et ne seront accessibles que par les méthodes de leur classe actuelle. Par conséquent, il est également connu sous le nom de masquage des données .
Pour réaliser l'encapsulation en Java −
-
Déclarez les variables d'une classe comme privées.
-
Fournissez des méthodes setter et getter publiques pour modifier et afficher les valeurs des variables.
Exemple
Voici un exemple qui montre comment réaliser l'encapsulation en Java −
/* File name : EncapTest.java */ public class EncapTest { private String name; private String idNum; private int age; public int getAge() { return age; } public String getName() { return name; } public String getIdNum() { return idNum; } public void setAge( int newAge) { age = newAge; } public void setName(String newName) { name = newName; } public void setIdNum( String newId) { idNum = newId; } }
Les méthodes publiques setXXX() et getXXX() sont les points d'accès des variables d'instance de la classe EncapTest. Normalement, ces méthodes sont appelées getters et setters. Par conséquent, toute classe qui souhaite accéder aux variables doit y accéder via ces getters et setters.
Les variables de la classe EncapTest sont accessibles à l'aide du programme suivant −
/* File name : RunEncap.java */ public class RunEncap { public static void main(String args[]) { EncapTest encap = new EncapTest(); encap.setName("James"); encap.setAge(20); encap.setIdNum("12343ms"); System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge()); } }
Cela produira le résultat suivant −
Sortie
Name : James Age : 20
Avantages de l'encapsulation
-
Les champs d'une classe peuvent être rendus en lecture seule ou en écriture seule.
-
Une classe peut avoir un contrôle total sur ce qui est stocké dans ses champs.
Java