Јава Енцапсулатион

У овом упутству ћете научити о инкапсулацији и скривању података у Јави уз помоћ примера.

Јава Енцапсулатион

Инкапсулација је једна од кључних карактеристика објектно оријентисаног програмирања. Инкапсулација се односи на групирање поља и метода унутар једне класе.

Спречава спољне класе да приступају и мењају поља и методе класе. Ово такође помаже у постизању скривања података .

Пример 1: Јава енкапсулација

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

Оутпут

 Површина: 30

У горњем примеру створили смо класу под називом Ареа. Главна сврха ове класе је израчунавање површине.

Да се израчуна површину, морамо две варијабле: уздуж и попреко и метод: getArea(). Стога смо та поља и методе повезали у једну класу.

Овде се пољима и методама може приступити и из других класа. Дакле, ово није скривање података .

Ово је само инкапсулација . Ми само држимо сличне кодове заједно.

Напомена : Људи често сматрају инкапсулацију скривањем података, али то није сасвим тачно.

Инкапсулација се односи на повезивање повезаних поља и метода заједно. Ово се може користити за постизање скривања података. Инкапсулација сама по себи није скривање података.

Зашто енкапсулација?

  • У Јави, енкапсулација нам помаже да сродна поља и методе држимо заједно, што наш код чини чишћим и лаким за читање.
  • Помаже у контроли вредности наших поља података. На пример,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Овде правимо добну променљиву privateи примењујемо логику унутар setAge()методе. Старост сада не може бити негативна.
  • Методе гетера и постављача пружају приступ нашим пољима класе само за читање или само за писање . На пример,
     getName() // provides read-only access setName() // provides write-only access
  • Помаже у раздвајању компонената система. На пример, можемо енкапсулирати код у више снопова.
    Ове раздвојене компоненте (сноп) могу се развијати, тестирати и исправљати грешке независно и истовремено. И, било какве промене у одређеној компоненти немају никакав ефекат на друге компоненте.
  • Сакривање података такође можемо постићи помоћу енкапсулације. У горњем примеру, ако променимо променљиву дужине и ширине у приватну, приступ тим пољима је ограничен.
    И, они су скривени од спољних класа. То се назива скривање података .

Сакривање података

Сакривање података је начин ограничавања приступа нашим члановима података скривањем детаља о примени. Инкапсулација такође пружа начин за сакривање података.

Можемо користити модификаторе приступа да бисмо постигли сакривање података. На пример,

Пример 2: Сакривање података помоћу приватног спецификатора

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

Оутпут

 Моје године су 24

У горњем примеру имамо privateпољско доба. Будући да јесте private, не може му се приступити изван разреда.

Да бисмо приступили узрасту, користили смо publicметоде: getAge()и setAge(). Ове методе се називају геттер и сеттер методе.

Прилагођавање старости омогућило нам је да ограничимо неовлашћени приступ изван разреда. Ово је скривање података .

Ако покушамо да приступимо добном пољу из класе Маин, добићемо грешку.

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

Занимљиви Чланци...