Java-kapselointi

Tässä opetusohjelmassa opit kapseloinnista ja tietojen piilottamisesta Java-sovelluksessa esimerkkien avulla.

Java-kapselointi

Kapselointi on yksi olio-ohjelmoinnin pääpiirteistä. Kapselointi tarkoittaa kenttien ja menetelmien niputtamista yhden luokan sisällä.

Se estää ulompia luokkia pääsemästä luokan kenttiin ja menetelmiin ja vaihtamasta niitä. Tämä auttaa myös saavuttamaan tietojen piilottamisen .

Esimerkki 1: Java-kapselointi

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

Tuotos

 Alue: 30

Yllä olevassa esimerkissä olemme luoneet luokan nimeltä Area. Tämän luokan päätarkoitus on laskea pinta-ala.

Laskea ala, tarvitsemme kaksi muuttujaa: pituus ja leveys ja menetelmää: getArea(). Siksi niputimme nämä kentät ja menetelmät yhden luokan sisälle.

Tässä kenttiä ja menetelmiä pääsee myös muilta luokilta. Siksi tämä ei ole tietojen piilottamista .

Tämä on vain kapselointi . Pidämme vain samanlaisia ​​koodeja yhdessä.

Huomaa : Ihmiset pitävät kapselointia usein tietojen piilottamisena, mutta se ei ole täysin totta.

Kapselointi tarkoittaa liittyvien kenttien ja menetelmien niputtamista yhdessä. Tätä voidaan käyttää tietojen piilottamiseen. Kapselointi sinänsä ei ole tietojen piilottamista.

Miksi kapselointi?

  • Java: ssa kapselointi auttaa meitä pitämään liittyvät kentät ja menetelmät yhdessä, mikä tekee koodistamme puhtaamman ja helppolukuisemman.
  • Se auttaa hallitsemaan tietokenttien arvoja. Esimerkiksi,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Tässä teemme ikämuuttujan privateja sovellamme logiikkaa setAge()menetelmän sisällä . Ikä ei voi nyt olla negatiivinen.
  • Getter- ja setter-menetelmät tarjoavat vain luku- tai kirjoitusoikeuden luokan kenttiin. Esimerkiksi,
     getName() // provides read-only access setName() // provides write-only access
  • Se auttaa irrottamaan järjestelmän komponentit. Esimerkiksi voimme kapseloida koodin useisiin nippuihin.
    Nämä irrotetut komponentit (paketti) voidaan kehittää, testata ja virheenkorjata itsenäisesti ja samanaikaisesti. Ja tietyn komponentin muutoksilla ei ole mitään vaikutusta muihin komponentteihin.
  • Voimme saavuttaa myös tietojen piilottamisen kapseloinnin avulla. Jos muutamme yllä olevassa esimerkissä pituus- ja leveysmuuttujan yksityiseksi, pääsy näihin kenttiin on rajoitettu.
    Ja ne pidetään piilossa ulkoluokilta. Tätä kutsutaan tietojen piilottamiseksi .

Tietojen piilottaminen

Tietojen piilottaminen on tapa rajoittaa tietojemme jäsenten pääsyä piilottamalla toteutustiedot. Kapselointi tarjoaa myös tavan tietojen piilottamiseen.

Voimme käyttää pääsynmuokkaajia tietojen piilottamiseen. Esimerkiksi,

Esimerkki 2: Tietojen piilottaminen yksityisen määrittelijän avulla

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

Tuotos

 Ikäni on 24

Yllä olevassa esimerkissä meillä on privatekenttäikä. Koska se on private, sitä ei voida käyttää luokan ulkopuolelta.

Iän saamiseksi olemme käyttäneet publicmenetelmiä: getAge()ja setAge(). Näitä menetelmiä kutsutaan getter- ja setter-menetelmiksi.

Iän tekeminen yksityiseksi antoi meille mahdollisuuden rajoittaa luvatonta pääsyä luokan ulkopuolelle. Tämä on tietojen piilottamista .

Jos yritämme päästä ikäluokkaan pääluokasta, saamme virheen.

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

Mielenkiintoisia artikkeleita...