Інкапсуляція Java

У цьому посібнику ви дізнаєтесь про інкапсуляцію та приховування даних у Java за допомогою прикладів.

Інкапсуляція Java

Інкапсуляція - одна з ключових особливостей об’єктно-орієнтованого програмування. Інкапсуляція відноситься до об’єднання полів і методів всередині одного класу.

Це заважає зовнішнім класам отримувати доступ та змінювати поля та методи класу. Це також допомагає досягти приховування даних .

Приклад 1: Інкапсуляція Java

 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

У наведеному вище прикладі ми створили клас з назвою Area. Основна мета цього класу - обчислити площу.

Для обчислення площі, нам потрібні дві змінні: довжина і ширина і метод: getArea(). Отже, ми об’єднали ці поля та методи всередині одного класу.

Тут поля та методи також доступні з інших класів. Отже, це не приховування даних .

Це лише інкапсуляція . Ми просто зберігаємо подібні коди разом.

Примітка : Люди часто вважають інкапсуляцію приховуванням даних, але це не зовсім так.

Інкапсуляція відноситься до об’єднання пов’язаних полів та методів разом. Це може бути використано для приховування даних. Капсуляція сама по собі не є приховуванням даних.

Чому інкапсуляція?

  • У Java інкапсуляція допомагає нам зберігати пов'язані поля та методи разом, що робить наш код чистішим та легшим для читання.
  • Це допомагає контролювати значення наших полів даних. Наприклад,
     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(). Ці методи називаються методами getter та setter.

Призначення віку приватним дозволило нам обмежити несанкціонований доступ поза межами класу. Це приховування даних .

Якщо ми спробуємо отримати доступ до вікового поля з класу Main, ми отримаємо помилку.

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

Цікаві статті...