Incapsularea Java

În acest tutorial, veți afla despre încapsulare și ascunderea datelor în Java cu ajutorul exemplelor.

Incapsularea Java

Incapsularea este una dintre caracteristicile cheie ale programării orientate pe obiecte. Incapsularea se referă la gruparea câmpurilor și metodelor într-o singură clasă.

Împiedică clasele exterioare să acceseze și să schimbe câmpurile și metodele unei clase. Acest lucru ajută și la ascunderea datelor .

Exemplul 1: încapsulare Java

 class Area ( // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) ( this.length = length; this.breadth = breadth; ) // method to calculate area public void getArea() ( int area = length * breadth; System.out.println("Area: " + area); ) ) class Main ( public static void main(String() args) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )

Ieșire

 Suprafață: 30

În exemplul de mai sus, am creat o clasă numită Area. Scopul principal al acestei clase este calcularea suprafeței.

Pentru a calcula o zonă, avem nevoie de două variabile: lungimea și lățimea și o metodă: getArea(). Prin urmare, am grupat aceste câmpuri și metode într-o singură clasă.

Aici, câmpurile și metodele pot fi accesate și din alte clase. Prin urmare, aceasta nu este ascunderea datelor .

Aceasta este doar încapsulare . Pur și simplu păstrăm împreună coduri similare.

Notă : Oamenii consideră adesea încapsularea drept ascunderea datelor, dar acest lucru nu este în totalitate adevărat.

Incapsularea se referă la gruparea câmpurilor și metodelor conexe împreună. Aceasta poate fi utilizată pentru a ascunde datele. Incapsularea în sine nu înseamnă ascunderea datelor.

De ce incapsularea?

  • În Java, încapsularea ne ajută să păstrăm împreună câmpurile și metodele conexe, ceea ce face ca codul nostru să fie mai curat și ușor de citit.
  • Ajută la controlul valorilor câmpurilor noastre de date. De exemplu,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Aici, facem variabila vârstă privateși aplicăm logica în interiorul setAge()metodei. Acum, vârsta nu poate fi negativă.
  • Metodele getter și setter oferă acces numai în citire sau în scriere la câmpurile noastre de clasă. De exemplu,
     getName() // provides read-only access setName() // provides write-only access
  • Ajută la decuplarea componentelor unui sistem. De exemplu, putem încapsula codul în mai multe pachete.
    Aceste componente decuplate (pachet) pot fi dezvoltate, testate și depanate independent și concomitent. Și orice modificare a unei anumite componente nu are niciun efect asupra altor componente.
  • De asemenea, putem realiza ascunderea datelor folosind încapsularea. În exemplul de mai sus, dacă schimbăm variabila lungime și lățime în privat, atunci accesul la aceste câmpuri este restricționat.
    Și sunt ținute ascunse de clasele exterioare. Aceasta se numește ascunderea datelor .

Ascunderea datelor

Ascunderea datelor este o modalitate de a restricționa accesul membrilor noștri de date prin ascunderea detaliilor de implementare. Incapsularea oferă, de asemenea, o modalitate de ascundere a datelor.

Putem folosi modificatori de acces pentru a ascunde datele. De exemplu,

Exemplul 2: Ascunderea datelor folosind specificatorul privat

 class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )

Ieșire

 Vârsta mea este de 24 de ani

În exemplul de mai sus, avem o privatevârstă de câmp. Întrucât este private, nu poate fi accesat din afara clasei.

Pentru a accesa vârsta, am folosit publicmetode: getAge()și setAge(). Aceste metode se numesc metode getter și setter.

Facerea vârstei private ne-a permis să restricționăm accesul neautorizat din afara clasei. Aceasta este ascunderea datelor .

Dacă încercăm să accesăm câmpul de vârstă din clasa Main, vom primi o eroare.

 // error: age has private access in Person p1.age = 24;

Articole interesante...