Java Encapsulation

V tej vadnici boste s pomočjo primerov izvedeli o kapsulaciji in skrivanju podatkov v Javi.

Java Encapsulation

Kapsulacija je ena ključnih značilnosti objektno usmerjenega programiranja. Inkapsulacija se nanaša na združevanje polj in metod znotraj enega razreda.

Zunanjim razredom preprečuje dostop in spreminjanje polj in metod razreda. To pomaga tudi pri skrivanju podatkov .

Primer 1: Java Encapsulation

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

Izhod

 Površina: 30

V zgornjem primeru smo ustvarili razred z imenom Area. Glavni namen tega razreda je izračunati površino.

Za izračun območje, moramo dve spremenljivki: dolžino in širino in metodo: getArea(). Zato smo ta polja in metode združili v en razred.

Tu lahko do polj in metod dostopate tudi iz drugih razredov. Zato to ni skrivanje podatkov .

To je samo enkapsulacija . Podobne kode samo hranimo skupaj.

Opomba : Ljudje pogosto obravnavajo enkapsulacijo kot skrivanje podatkov, kar pa ni povsem res.

Kapsulacija se nanaša na združevanje povezanih polj in metod skupaj. S tem lahko dosežemo skrivanje podatkov. Kapsulacija sama po sebi ni skrivanje podatkov.

Zakaj kapsulacija?

  • V Javi nam enkapsulacija pomaga obdržati povezana polja in metode, zato je naša koda čistejša in enostavnejša za branje.
  • Pomaga pri nadzoru vrednosti naših podatkovnih polj. Na primer
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Tu delamo starostno spremenljivko privatein uporabljamo logiko znotraj setAge()metode. Zdaj starost ne more biti negativna.
  • Metodi getter in setter omogočata dostop do polj našega razreda samo za branje ali samo za pisanje . Na primer
     getName() // provides read-only access setName() // provides write-only access
  • Pomaga ločiti komponente sistema. Kodo lahko na primer vključimo v več snopov.
    Te ločene komponente (sveženj) je mogoče razviti, preizkusiti in razhroščevati neodvisno in sočasno. Kakršne koli spremembe določene komponente nimajo vpliva na druge komponente.
  • Skrivanje podatkov lahko dosežemo tudi z enkapsulacijo. Če v zgornjem primeru spremenljivko dolžine in širine spremenimo v zasebno, je dostop do teh polj omejen.
    In skriti so pred zunanjimi razredi. To se imenuje skrivanje podatkov .

Skrivanje podatkov

Skrivanje podatkov je način omejevanja dostopa naših podatkovnih članov s skrivanjem podrobnosti o izvedbi. Enkapsulacija omogoča tudi skrivanje podatkov.

Za prikrivanje podatkov lahko uporabimo modifikatorje dostopa. Na primer

Primer 2: Skrivanje podatkov z uporabo zasebnega specifikatorja

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

Izhod

 Moja starost je 24 let

V zgornjem primeru imamo privatepoljsko starost. Ker je private, do njega ni mogoče dostopati zunaj razreda.

Za dostop do starosti smo uporabili publicmetode: getAge()in setAge(). Te metode se imenujejo getter in setter metode.

Če postanemo starost zasebna, smo lahko omejili nepooblaščen dostop zunaj predavanja. To je skrivanje podatkov .

Če poskusimo dostopati do starostnega polja iz razreda Main, bomo dobili napako.

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

Zanimive Članki...