Encapsulació en Java és un procés d'embolcall de codi i dades en una sola unitat , per exemple, una càpsula que es barreja de diversos medicaments.
Podem crear una classe totalment encapsulada a Java fent privats tots els membres de dades de la classe. Ara podem utilitzar mètodes setter i getter per configurar i obtenir les dades que hi ha.
El Java Bean class és l'exemple d'una classe totalment encapsulada.
Avantatge de l'encapsulació en Java
En proporcionar només un mètode setter o getter, podeu crear la classe només de lectura o només d'escriptura . Dit d'una altra manera, podeu saltar els mètodes getter o setter.
rudyard kipling si explicació
Et proporciona el control sobre les dades . Suposem que voleu establir el valor d'id que només hauria de ser superior a 100, podeu escriure la lògica dins del mètode setter. Podeu escriure la lògica per no emmagatzemar els nombres negatius en els mètodes del setter.
És una manera d'aconseguir ocultació de dades a Java perquè una altra classe no podrà accedir a les dades a través dels membres de dades privades.
La classe encapsulada és fàcil de provar . Per tant, és millor per a les proves d'unitat.
Els IDE estàndard proporcionen la facilitat per generar els getters i setters. Així és fàcil i ràpid de crear una classe encapsulada en Java.
Exemple senzill d'encapsulació a Java
Vegem l'exemple senzill d'encapsulació que només té un camp amb els seus mètodes setter i getter.
Fitxer: Student.java
substituint la cadena a 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 } }
Fitxer: 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
Sortida:
vijay
Classe de només lectura
//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; } }
Ara, no podeu canviar el valor del membre de dades de la universitat que és 'AKG'.
s.setCollege('KITE');//will render compile time error
Classe només d'escriptura
//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; } }
Ara, no podeu obtenir el valor de la universitat, només podeu canviar el valor del membre de les dades de la universitat.
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 altre exemple d'encapsulació a Java
Vegem un altre exemple d'encapsulació que només té quatre camps amb els seus mètodes setter i getter.
Fitxer: Account.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; } }
Fitxer: 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()); } }Prova-ho ara
Sortida:
7560504000 Sonoo Jaiswal [email protected] 500000.0