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

Що таке інкапсуляція Java?

Інкапсуляція в Java це механізм для об’єднання змінних (даних) і методів (коду) в одне ціле. Це процес приховування деталей інформації та захисту даних і поведінки об’єкта. Це одна з чотирьох важливих концепцій ООП. Клас інкапсуляції легко тестувати, тому він також кращий для модульного тестування.

Натисніть тут якщо відео недоступне

Вивчіть інкапсуляцію в Java з прикладом

Щоб детально зрозуміти, що таке інкапсуляція, розглянемо наступний клас банківського рахунку з методами депозиту та показу балансу

class Account {
    private int account_number;
    private int account_balance;

    public void show Data() {
        //code to show data 
    }

    public void deposit(int a) {
        if (a < 0) {
            //show error 
        } else
            account_balance = account_balance + a;
    }
}

Припустимо, хакеру вдалося отримати доступ до коду вашого банківського рахунку. Тепер він намагається внести суму -100 на ваш рахунок двома способами. Побачимо його перший метод або підхід.

Підхід 1: Він намагається внести недійсну суму (скажімо, -100) на ваш банківський рахунок, маніпулюючи кодом.

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

Тепер виникає питання – Це можливо? Нехай розслідують. Зазвичай змінна в класі встановлюється як «приватна», як показано нижче. Доступ до нього можливий лише за допомогою методів, визначених у класі. Жоден інший клас або об'єкт не може отримати до них доступ.

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

Якщо елемент даних є приватним, це означає, що до нього можна отримати доступ лише в межах того самого класу. Жоден зовнішній клас не може отримати доступ до приватних даних або змінної іншого класу. Отже, у нашому випадку хакер не може внести суму -100 на ваш рахунок.

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

Підхід 2: перший підхід хакера не вніс суму. Далі він намагається внести суму -100 за допомогою методу «депозит».

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

Але реалізація методу має перевірку на від’ємні значення. Тому другий підхід також не вдається.

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

Таким чином, ви ніколи не надаєте свої дані стороннім особам. Що робить вашу програму безпечною.

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

Весь код можна розглядати як капсулу, і ви можете спілкуватися лише через повідомлення. Звідси і назва інкапсуляція.

Дані ховаються в Java

Дані ховаються в Java приховує змінні класу від інших класів. До нього можна отримати доступ лише через метод їх поточного класу. Він приховує деталі впровадження від користувачів. Але більше, ніж приховування даних, це призначено для кращого керування або групування пов’язаних даних. Щоб досягти меншого ступеня інкапсуляції в Java, ви можете використовувати такі модифікатори, як «захищений» або «публічний». За допомогою інкапсуляції розробники можуть легко змінити одну частину коду, не впливаючи на іншу.

Геттер і сетер в Java

Геттер і сетер в Java це два звичайні методи, які використовуються для отримання та оновлення значень змінної. Вони в основному використовуються для створення, зміни, видалення та перегляду значень змінних. Метод setter використовується для оновлення значень, а метод getter використовується для читання або отримання значень. Вони також відомі як аксесор і мутатор.

Наступний код є прикладом методів getter і setter:

class Account{ 
private int account_number;
private int account_balance; 
    // getter method
	public int getBalance() {
        return this.account_balance;
    }
    // setter method
	public void setNumber(int num) {
        this.account_number = num;
    }
}

У наведеному вище прикладі метод getBalance() є методом отримання, який зчитує значення змінної account_balance, а метод setNumber() є методом встановлення, який встановлює або оновлює значення для змінної account_number.

Абстракція проти інкапсуляції

Часто інкапсуляцію неправильно розуміють Абстракція. Давайте вивчати -

  • Інкапсуляція — це більше про те, як досягти функціональності
  • Абстракція більше стосується того, «Що» може робити клас.

Простим прикладом, щоб зрозуміти цю різницю, є мобільний телефон. Де складна логіка на друкованій платі інкапсульована в сенсорний екран, а інтерфейс надається для її абстрагування.

Переваги інкапсуляції в Java

  • Інкапсуляція — це зв’язування даних із пов’язаними з ними функціями. Тут функціональні можливості означають «методи», а дані означають «змінні».
  • Тому ми зберігаємо змінні та методи в одному місці. Це місце — «клас». Клас є основою для інкапсуляції.
  • З Java Інкапсуляція, ви можете приховати (обмежити доступ) до критичних членів даних у вашому коді, що покращує безпеку
  • Як ми обговорювали раніше, якщо член даних оголошено «приватним», тоді до нього можна отримати доступ лише в межах того самого класу. Жоден зовнішній клас не може отримати доступ до члена даних (змінної) іншого класу.
  • Однак, якщо вам потрібно отримати доступ до цих змінних, ви повинні використовувати загальнодоступний «гетер» і «сетер» методи

Підсумуйте цей пост за допомогою: