Java kapseldamine

Lang L: none (table-of-contents)

Selles õpetuses saate näidete abil teada Java-sse kapseldamise ja andmete peitmise kohta.

Java kapseldamine

Kapseldamine on objektorienteeritud programmeerimise üks põhijooni. Kapseldamine viitab väljade ja meetodite ühendamisele ühe klassi sees.

See takistab välisklassidel juurdepääsu ja muutmist klassi väljadele ja meetoditele. See aitab saavutada ka andmete varjamist .

Näide 1: Java kapseldamine

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

Väljund

 Pindala: 30

Ülaltoodud näites oleme loonud klassi nimega Area. Selle klassi peamine eesmärk on pindala arvutamine.

Arvutada pindala, peame kahe muutuja pikkus ja laius ja meetod: getArea(). Seega koondasime need väljad ja meetodid ühte klassi.

Siin pääseb väljadele ja meetoditele juurde ka teistest klassidest. Seega pole see andmete varjamine .

See on ainult kapseldamine . Hoiame lihtsalt sarnaseid koode koos.

Märkus . Inimesed peavad kapseldamist sageli andmete varjamiseks, kuid see pole päris tõsi.

Kapseldamine viitab seotud väljade ja meetodite ühendamisele. Seda saab kasutada andmete peitmiseks. Kapseldamine iseenesest ei ole andmete varjamine.

Miks kapseldamine?

  • Javas aitab kapseldamine hoida omavahel seotud väljad ja meetodid koos, mis muudab meie koodi puhtamaks ja hõlpsasti loetavaks.
  • See aitab kontrollida meie andmeväljade väärtusi. Näiteks,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Siin muudame vanuse muutuja privateja rakendame setAge()meetodi sees loogikat . Nüüd ei saa vanus olla negatiivne.
  • Getter ja setter meetodid annavad ainult lugemiseks või kirjutada ainult juurdepääsu meie klassi väljad. Näiteks,
     getName() // provides read-only access setName() // provides write-only access
  • See aitab süsteemi komponente lahutada. Näiteks võime koodi kapseldada mitmesse kimpu.
    Neid lahutatud komponente (komplekti) saab iseseisvalt ja samaaegselt arendada, testida ja siluda. Ja mis tahes muudatused konkreetses komponendis ei mõjuta teisi komponente.
  • Andmete varjamine on võimalik ka kapseldamise abil. Kui muudame ülaltoodud näites pikkuse ja laiuse muutuja privaatseks, on juurdepääs nendele väljadele piiratud.
    Ja neid hoitakse välisklasside eest varjatud. Seda nimetatakse andmete varjamiseks .

Andmete varjamine

Andmete varjamine on viis, kuidas piirata meie andmeliikmete juurdepääsu, varjates rakenduse üksikasju. Kapseldamine annab ka võimaluse andmete peitmiseks.

Andmete varjamise saavutamiseks saame kasutada juurdepääsu modifikaatoreid. Näiteks,

Näide 2: andmete peitmine erasektori abil

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

Väljund

 Minu vanus on 24

Ülaltoodud näites on meil privatepõlluajastu. Kuna see on nii private, siis sellele ei pääse väljaspool klassi.

Vanuse saamiseks oleme kasutanud publicmeetodeid: getAge()ja setAge(). Neid meetodeid nimetatakse getter- ja setter-meetoditeks.

Vanuse privaatseks muutmine võimaldas meil piirata loata juurdepääsu väljastpoolt klassi. See on andmete varjamine .

Kui proovime pääseda vanuseväljale põhiklassist, saame vea.

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

Huvitavad Artiklid...