Що таке інкапсуляція в Java?
Інкапсуляція в Java - це механізм, який дозволяє узагальнювати змінні (дані) та методи (код) у єдине ціле. Це процес приховування інформаційних деталей та захисту даних та поведінки об’єкта. Це одна з чотирьох важливих концепцій ООП. Клас інкапсуляції легко перевірити, тому він також кращий для модульного тестування.
У цьому підручнику ви дізнаєтесь-
- Що таке інкапсуляція в Java?
- Вивчіть інкапсуляцію на прикладі
- Приховування даних у Java
- Методи Getter та Setter в 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} elseaccount_balance = account_balance + a;}}
Припустимо, хакеру вдалося отримати доступ до коду вашого банківського рахунку. Тепер він намагається внести суму -100 на ваш рахунок двома способами. Нехай побачимо його перший метод або підхід.
Підхід 1: Він намагається внести недійсну суму (скажімо -100) на ваш банківський рахунок, маніпулюючи кодом.
Тепер питання - чи можливо це? Нехай розслідує.
Зазвичай змінну в класі встановлюють як "приватну", як показано нижче. Доступ до нього можливий лише за допомогою методів, визначених у класі. Жоден інший клас або об’єкт не може отримати до них доступ.
Якщо член даних є приватним, це означає, що до нього можна отримати доступ лише в тому ж класі. Жоден зовнішній клас не може отримати доступ до приватних даних або змінних іншого класу.
Тож у нашому випадку хакер не може внести на ваш рахунок суму -100.
Підхід 2 : Перший підхід хакера не зміг внести суму. Далі він намагається внести депозит -100 методом "депозит".
Але реалізація методу має перевірку на від’ємні значення. Тож другий підхід теж не вдається.
Таким чином, ви ніколи не виставляєте свої дані стороннім особам. Що робить вашу заявку безпечною.
Весь код можна уявити капсулою, а спілкуватися можна лише через повідомлення. Звідси і назва інкапсуляція.
Приховування даних у Java
Приховування даних у Java приховує змінні класу від інших класів. Доступ до нього можливий лише за допомогою методу їх поточного класу. Він приховує деталі реалізації від користувачів. Але більше, ніж приховування даних, воно призначене для кращого управління або групування відповідних даних.
Щоб досягти меншого ступеня інкапсуляції в Java, ви можете використовувати модифікатори типу "захищений" або "загальнодоступний". За допомогою інкапсуляції розробники можуть легко змінювати одну частину коду, не впливаючи на іншу.
Геттер і Сеттер на Java
Getter і Setter в Java - це два звичайні методи, що використовуються для отримання та оновлення значень змінної. Вони в основному використовуються для створення, модифікації, видалення та перегляду значень змінних. Метод setter використовується для оновлення значень, а метод getter - для читання або отримання значень. Вони також відомі як аксесуар та мутатор.
Наступний код є прикладом методів отримання та встановлення:
class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}
У наведеному вище прикладі метод getBalance () - це метод getter, який зчитує значення змінної account_balance, а метод setNumber () - метод setter, який встановлює або оновлює значення для змінної account_number.
Абстракція проти інкапсуляції
Часто інкапсуляцію неправильно розуміють під абстракцією. Давайте вивчимо-
- Інкапсуляція - це більше про те, "Як" досягти функціональності
- Абстракція більше стосується того, що може зробити клас.
Простий приклад зрозуміти цю різницю - це мобільний телефон. Де складна логіка на друкованій платі інкапсульована в сенсорний екран, а інтерфейс передбачений для її абстрагування.
Переваги інкапсуляції в Java
- Інкапсуляція пов’язує дані з відповідними функціональними можливостями. Тут функціональність означає "методи", а дані означає "змінні"
- Тож ми зберігаємо змінну та методи в одному місці. Це місце - "клас". Клас є базою для інкапсуляції.
- За допомогою інкапсуляції Java ви можете приховати (обмежити доступ) важливих членів даних у коді, що покращує безпеку
- Як ми вже обговорювали раніше, якщо елемент даних оголошено "приватним", тоді доступ до нього можна отримати лише в тому ж класі. Жоден зовнішній клас не може отримати доступ до члена даних (змінної) іншого класу.
- Однак, якщо вам потрібен доступ до цих змінних, вам доведеться використовувати загальнодоступні методи "getter" та "setter" .