Java enkapsulacija

U ovom ćete uputstvu uz primjere naučiti o inkapsulaciji i skrivanju podataka u Javi.

Java enkapsulacija

Inkapsulacija je jedna od ključnih značajki objektno orijentiranog programiranja. Inkapsulacija se odnosi na grupiranje polja i metoda unutar jedne klase.

Sprječava pristup vanjskim klasama i promjenu polja i metoda klase. To također pomaže u postizanju skrivanja podataka .

Primjer 1: Java enkapsulacija

 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(); ) )

Izlaz

 Površina: 30

U gornjem primjeru stvorili smo klasu pod nazivom Area. Glavna svrha ove klase je izračunavanje površine.

Za izračun površine, treba nam dvije varijable: uzduž i poprijeko i metode: getArea(). Stoga smo ta polja i metode povezali u jednu klasu.

Ovdje se poljima i metodama može pristupiti i iz drugih klasa. Dakle, ovo nije skrivanje podataka .

Ovo je samo enkapsulacija . Samo držimo slične kodove zajedno.

Napomena : Ljudi često smatraju inkapsulaciju skrivanjem podataka, ali to nije sasvim točno.

Inkapsulacija se odnosi na grupiranje povezanih polja i metoda zajedno. To se može koristiti za postizanje skrivanja podataka. Inkapsulacija sama po sebi nije skrivanje podataka.

Zašto enkapsulacija?

  • U Javi nam enkapsulacija pomaže u održavanju povezanih polja i metoda, što naš kod čini čišćim i lakim za čitanje.
  • Pomaže u kontroli vrijednosti naših podatkovnih polja. Na primjer,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Ovdje izrađujemo dobnu varijablu privatei primjenjujemo logiku unutar setAge()metode. Sada dob ne može biti negativna.
  • Metode dobivanja i postavljanja pružaju pristup našim poljima klase samo za čitanje ili samo za pisanje . Na primjer,
     getName() // provides read-only access setName() // provides write-only access
  • Pomaže u razdvajanju komponenata sustava. Na primjer, možemo enkapsulirati kôd u više snopova.
    Ove nevezane komponente (snop) mogu se razvijati, testirati i ispravljati neovisno i istodobno. Bilo kakve promjene u određenoj komponenti nemaju utjecaja na druge komponente.
  • Sakrivanje podataka također možemo postići pomoću enkapsulacije. U gornjem primjeru, ako promijenimo varijablu duljine i širine u privatnu, tada je pristup tim poljima ograničen.
    I, skriveni su od vanjskih klasa. To se naziva skrivanje podataka .

Sakrivanje podataka

Sakrivanje podataka je način ograničavanja pristupa našim članovima podataka skrivanjem detalja implementacije. Inkapsulacija također pruža način za skrivanje podataka.

Možemo koristiti modifikatore pristupa za postizanje skrivanja podataka. Na primjer,

Primjer 2: Sakrivanje podataka pomoću privatnog specifikatora

 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()); ) )

Izlaz

 Moje godine su 24

U gornjem primjeru imamo privatepoljsko doba. Budući da jest private, ne može mu se pristupiti izvan razreda.

Da bismo pristupili dobi, koristili smo publicmetode: getAge()i setAge(). Te se metode nazivaju getter i setter metode.

Pridobivanje dobnih granica omogućilo nam je ograničavanje neovlaštenog pristupa izvan razreda. Ovo je skrivanje podataka .

Ako pokušamo pristupiti dobnom polju iz klase Main, dobit ćemo pogrešku.

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

Zanimljivi članci...