Java iekapsulēšana

Šajā apmācībā jūs uzzināsit par iekapsulēšanu un datu slēpšanu Java ar piemēru palīdzību.

Java iekapsulēšana

Iekapsulēšana ir viena no objektorientētās programmēšanas galvenajām iezīmēm. Iekapsulēšana attiecas uz lauku un metožu apvienošanu vienā klasē.

Tas neļauj ārējām klasēm piekļūt un mainīt klases laukus un metodes. Tas arī palīdz panākt datu slēpšanu .

1. piemērs: Java iekapsulēšana

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

Rezultāts

 Platība: 30

Iepriekš minētajā piemērā mēs esam izveidojuši klasi ar nosaukumu Area. Šīs klases galvenais mērķis ir aprēķināt platību.

Lai aprēķinātu platību, mums ir divi mainīgie: garums un platums, un metode: getArea(). Tādējādi mēs apvienojām šos laukus un metodes vienā klasē.

Šeit laukiem un metodēm var piekļūt arī no citām klasēm. Tādējādi tā nav datu slēpšana .

Tā ir tikai iekapsulēšana . Mēs vienkārši glabājam līdzīgus kodus.

Piezīme . Cilvēki bieži uzskata iekapsulēšanu par datu slēpšanu, taču tā nav pilnīgi taisnība.

Iekapsulēšana attiecas uz saistīto lauku un metožu apvienošanu kopā. To var izmantot, lai panāktu datu slēpšanu. Iekapsulēšana pati par sevi nav datu slēpšana.

Kāpēc iekapsulēšana?

  • Java valodā iekapsulēšana palīdz mums kopā saglabāt saistītos laukus un metodes, kas padara mūsu kodu tīrāku un viegli lasāmu.
  • Tas palīdz kontrolēt mūsu datu lauku vērtības. Piemēram,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Šeit mēs veicam vecuma mainīgo privateun pielietojam loģiku setAge()metodes iekšienē . Tagad vecums nevar būt negatīvs.
  • Par vaislas un noteicēji metodes nodrošina tikai lasīšanas vai rakstīšanas tikai piekļuvi mūsu klases laukiem. Piemēram,
     getName() // provides read-only access setName() // provides write-only access
  • Tas palīdz atdalīt sistēmas komponentus. Piemēram, kodu varam iekapsulēt vairākos saišķos.
    Šos atdalītos komponentus (saišķi) var izstrādāt, pārbaudīt un atkļūdot neatkarīgi un vienlaikus. Jebkuras izmaiņas noteiktā komponentā neietekmē citus komponentus.
  • Mēs varam panākt arī datu slēpšanu, izmantojot iekapsulēšanu. Iepriekš minētajā piemērā, ja mainām garuma un platuma mainīgo uz privātu, piekļuve šiem laukiem ir ierobežota.
    Viņi tiek paslēpti no ārējām klasēm. To sauc par datu slēpšanu .

Datu slēpšana

Datu slēpšana ir veids, kā ierobežot mūsu datu dalībnieku piekļuvi, slēpjot ieviešanas detaļas. Iekapsulēšana arī nodrošina iespēju slēpt datus.

Mēs varam izmantot piekļuves modifikatorus, lai panāktu datu slēpšanu. Piemēram,

2. piemērs: Datu slēpšana, izmantojot privāto specifikatoru

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

Rezultāts

 Mans vecums ir 24 gadi

Iepriekš minētajā piemērā mums ir privatelauka vecums. Tā kā tas ir private, tam nevar piekļūt ārpus klases.

Lai piekļūtu vecumam, mēs izmantojām publicmetodes: getAge()un setAge(). Šīs metodes sauc par getter un setter metodēm.

Vecuma noteikšana par privātu ļāva mums ierobežot nesankcionētu piekļuvi ārpus klases. Tā ir datu slēpšana .

Ja mēģināsim piekļūt vecuma laukam no galvenās klases, mēs saņemsim kļūdu.

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

Interesanti raksti...