Încapsularea în Java
În ce este încapsularea Java?
Încapsularea în Java este un mecanism pentru a încheia variabile (date) și metode (cod) împreună ca o singură unitate. Este procesul de ascundere a detaliilor informațiilor și de protejare a datelor și a comportamentului obiectului. Este unul dintre cele patru concepte importante de POO. Clasa încapsulată este ușor de testat, deci este mai bună și pentru testarea unitară.
Clic aici dacă videoclipul nu este accesibil
Învață încapsularea în Java cu Exemplu
Pentru a înțelege ce este încapsularea în detaliu, luați în considerare următoarea clasă de conturi bancare cu metode de depunere și afișare a soldului
class Account { private int account_number; private int account_balance; public void show Data() { //code to show data } public void deposit(int a) { if (a < 0) { //show error } else account_balance = account_balance + a; } }
Să presupunem că un hacker a reușit să obțină acces la codul contului tău bancar. Acum, el încearcă să depună suma -100 în contul tău în două moduri. Să vedem prima lui metodă sau abordare.
Abordarea 1: El încearcă să depună o sumă nevalidă (să zicem -100) în contul tău bancar manipulând codul.
Acum, întrebarea este - Este posibil? Să investigheze. De obicei, o variabilă dintr-o clasă este setată ca „privată”, așa cum se arată mai jos. Poate fi accesat doar cu metodele definite în clasă. Nicio altă clasă sau obiect nu le poate accesa.
Dacă un membru de date este privat, înseamnă că poate fi accesat numai în cadrul aceleiași clase. Nicio clasă din afara nu poate accesa date private sau variabile ale altei clase. Deci, în cazul nostru, hackerul nu poate depune suma -100 în contul tău.
Abordarea 2: Prima abordare a hackerului nu a reușit să depună suma. Apoi, încearcă să depună o sumă -100 folosind metoda „depunere”.
Dar implementarea metodei are o verificare pentru valori negative. Deci a doua abordare eșuează.
Astfel, nu vă expuneți niciodată datele unei părți externe. Ceea ce face aplicația dvs. sigură.
Întregul cod poate fi gândit la o capsulă și nu poți comunica decât prin intermediul mesajelor. De aici și încapsularea numelui.
Datele se ascund în Java
Datele se ascund în Java ascunde variabilele unei clase de alte clase. Acesta poate fi accesat numai prin metoda clasei lor curente. Acesta ascunde detaliile de implementare de la utilizatori. Dar mai mult decât ascunderea datelor, este menit pentru o mai bună gestionare sau grupare a datelor aferente. Pentru a obține un grad mai mic de încapsulare în Java, puteți folosi modificatori precum „protejat” sau „public”. Cu încapsulare, dezvoltatorii pot schimba cu ușurință o parte a codului, fără a o afecta pe cealaltă.
Getter și Setter în Java
Getter și Setter în Java sunt două metode convenționale utilizate pentru a prelua și actualiza valorile unei variabile. Ele sunt utilizate în principal pentru a crea, modifica, șterge și vizualiza valorile variabilelor. Metoda setter este folosită pentru actualizarea valorilor, iar metoda getter este utilizată pentru citirea sau preluarea valorilor. Sunt cunoscuți și ca accesori și mutatori.
Următorul cod este un exemplu de metode getter și setter:
class Account{ private int account_number; private int account_balance; // getter method public int getBalance() { return this.account_balance; } // setter method public void setNumber(int num) { this.account_number = num; } }
În exemplul de mai sus, metoda getBalance() este metoda getter care citește valoarea variabilei account_balance, iar metoda setNumber() este metoda setter care setează sau actualizează valoarea variabilei account_number.
Abstracție vs. încapsulare
Adesea, încapsularea este înțeleasă greșit cu abstracțiune. Sa invatam-
- Încapsularea se referă mai mult la „Cum” se realizează o funcționalitate
- Abstracția este mai mult despre „Ce” poate face o clasă.
Un exemplu simplu pentru a înțelege această diferență este un telefon mobil. În cazul în care logica complexă din placa de circuit este încapsulată într-un ecran tactil, iar interfața este furnizată pentru a o extrage.
Avantajele încapsulării în Java
- Încapsularea leagă datele cu funcționalitățile aferente. Aici funcționalitățile înseamnă „metode” iar datele înseamnă „variabile”
- Deci păstrăm variabilele și metodele într-un singur loc. Locul acela este „clasă”. Clasa este baza pentru încapsulare.
- cu Java Încapsulare, puteți ascunde (restricționați accesul) la membrii de date critice din codul dvs., ceea ce îmbunătățește securitatea
- După cum am discutat mai devreme, dacă un membru al datelor este declarat „privat”, atunci acesta poate fi accesat numai în cadrul aceleiași clase. Nicio clasă din afara nu poate accesa un membru de date (variabilă) al altei clase.
- Cu toate acestea, dacă trebuie să accesați aceste variabile, trebuie să utilizați „getter” și „setter” public metode.