Încapsulare în Java este o procesul de împachetare a codului și a datelor într-o singură unitate , de exemplu, o capsulă care este amestecată cu mai multe medicamente.
Putem crea o clasă complet încapsulată în Java făcând private toți membrii de date ai clasei. Acum putem folosi metode setter și getter pentru a seta și obține datele din el.
The Java Bean class este exemplul unei clase complet încapsulate.
Avantajul încapsulării în Java
Oferind doar o metodă setter sau getter, puteți crea clasa numai pentru citire sau doar pentru scriere . Cu alte cuvinte, puteți sări peste metodele getter sau setter.
Îți oferă control asupra datelor . Să presupunem că doriți să setați valoarea id care ar trebui să fie mai mare decât 100, puteți scrie logica în metoda setter. Puteți scrie logica pentru a nu stoca numerele negative în metodele setter.
Este o modalitate de a realiza ascunderea datelor în Java, deoarece altă clasă nu va putea accesa datele prin membrii datelor private.
Clasa încapsulată este usor de testat . Deci, este mai bine pentru testarea unitară.
IDE-urile standard oferă facilitatea de a genera getters și setter-uri. Deci este ușor și rapid pentru a crea o clasă încapsulată în Java.
Exemplu simplu de încapsulare în Java
Să vedem exemplul simplu de încapsulare care are un singur câmp cu metodele sale setter și getter.
Fișier: Student.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 } }
Fișier: 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
Ieșire:
vijay
Clasă numai pentru citire
//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; } }
Acum, nu puteți modifica valoarea membrului de date al colegiului, care este „AKG”.
s.setCollege('KITE');//will render compile time error
Clasa doar pentru scriere
//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; } }
Acum, nu puteți obține valoarea colegiului, puteți modifica doar valoarea datelor colegiului.
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 alt exemplu de încapsulare în Java
Să vedem un alt exemplu de încapsulare care are doar patru câmpuri cu metodele sale setter și getter.
Fișier: 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; } }
Fișier: 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()); } }Testează-l acum
Ieșire:
7560504000 Sonoo Jaiswal [email protected] 500000.0