Абстракція в Java
Що таке абстракція Java?
Абстракція це концепція об’єктно-орієнтованого програмування, яка «показує» лише важливі атрибути та «приховує» непотрібну інформацію. Основна мета абстрагування - приховати від користувачів непотрібні деталі. Абстракція — це вибір даних із більшого пулу, щоб показати користувачеві лише релевантні деталі об’єкта. Це допомагає зменшити складність програмування та зусилля. Це одна з найважливіших концепцій ООП.
Натисніть тут якщо відео недоступне
Давайте вивчимо абстракції в ООП на прикладі:
Припустімо, ви хочете створити банківську програму, і вас просять зібрати всю інформацію про вашого клієнта. Є ймовірність, що ви отримаєте наступну інформацію про клієнта
Але не вся наведена вище інформація потрібна для створення банківської програми. Отже, відбирати для себе потрібно лише корисну інформацію банківська програма з того басейну. Такі дані, як ім’я, адреса, податкова інформація тощо, мають сенс для банківської програми, яка є прикладом абстракції в ООП
Оскільки ми отримали/видалили/вибрали інформацію про клієнта з більшого пулу, цей процес називається абстракцією в ООП. Однак одну й ту саму інформацію, отриману після вилучення, можна використовувати для широкого спектру застосувань. Наприклад, ви можете використовувати ті самі дані для заявки на лікарняне, програми на порталі вакансій, державної бази даних тощо з невеликими змінами або без них. Таким чином, вони стають вашими основними даними. Це перевага абстракції в ООП.
Різниця між абстракцією та інкапсуляцією
Абстракція | Інкапсуляція |
---|---|
Абстракція в об'єктно-орієнтованому програмуванні вирішує проблеми на рівні проектування. | Інкапсуляція вирішує це на рівні реалізації. |
Абстракція в програмуванні полягає в тому, щоб приховати небажані деталі, одночасно показуючи найважливішу інформацію. | Інкапсуляція означає зв'язування коду та даних в єдине ціле. |
Абстракція даних в Java дозволяє зосередитися на тому, що повинен містити інформаційний об'єкт | Інкапсуляція означає приховування внутрішніх деталей або механізмів того, як об’єкт щось робить з міркувань безпеки. |
Різниця між абстрактним класом та інтерфейсом
Анотація класу | інтерфейс |
---|---|
Абстрактний клас може мати як абстрактні, так і неабстрактні методи. | Інтерфейс може мати лише абстрактні методи. |
Він не підтримує множинне успадкування. | Він підтримує множинне успадкування. |
Він може забезпечити реалізацію інтерфейсу. | Він не може забезпечити реалізацію абстрактного класу. |
Абстрактний клас може мати захищені та абстрактні публічні методи. | Інтерфейс може мати лише публічні абстрактні методи. |
Абстрактний клас може мати кінцеву, статичну або статичну кінцеву змінну з будь-яким специфікатором доступу. | Інтерфейс може мати лише загальнодоступну статичну кінцеву змінну. |
Що таке абстрактний клас?
РЕФЕРАТ ЗАНЯТТЯ є типом класу в Java, які оголошують один або декілька абстрактних методів. Ці класи можуть мати абстрактні методи, а також конкретні методи. Нормальний клас не може мати абстрактних методів. Абстрактний клас — це клас, який містить принаймні один абстрактний метод. Ми можемо зрозуміти концепцію за приклад форми в java.
Розглянемо наступну ієрархію класів, що складається з класу Shape, який успадковується трьома класами Rectangle, Circle і Triangle. Клас Shape створено для збереження загальних атрибутів і методів, спільних для трьох класів Rectangle, Circle і Triangle. CalculateArea() — це один із таких методів, спільний для всіх трьох дочірніх класів і присутній у класі Shape.
Тепер припустімо, що ви пишете код для створення об’єктів для класів, зображених вище. Давайте поспостерігаємо, як ці об'єкти виглядатимуть у практичному світі. Об’єкт класу rectangle надасть прямокутник, форму, яку ми так часто спостерігаємо у повсякденному житті.
Об’єкт класу трикутник дасть трикутник, знову ж таки звичайну повсякденну форму.
Але як би виглядав об’єкт Class Shape у практичному світі??
Якщо ви спостерігаєте, що клас Shape служить у наша мета досягнення спадкування і поліморфізм. Але він не був створений для створення екземпляра. Такі класи можна позначати абстрактний. Абстрактний клас Java не може бути створений.
Синтаксис:
abstract class Shape{ // code }
Можливо, ви НЕ позначаєте клас Shape як Abstract, а потім створюєте його екземпляр. Але такий об’єкт не матиме користі у вашому коді та відкриє місце для потенційних помилок. Тому це не бажано.
Що таке абстрактні методи Java?
РЕФЕРАТНИЙ МЕТОД in Java, це метод, який має лише визначення методу, але не містить реалізації. Метод без тіла відомий як абстрактний метод. Він повинен бути оголошений в абстрактному класі. Абстрактний метод ніколи не буде остаточним, тому що абстрактний клас повинен реалізувати всі абстрактні методи.
Як ми всі знаємо, формула для обчислення площі прямокутника, кола та трикутника відрізняється. Метод CalculateArea() має бути перевизначений класами-спадкоємцями. Немає сенсу визначати його в класі Shape, але нам потрібно переконатися, що всі класи-спадкоємці мають метод.
Такі методи можна позначити реферат.
Синтаксис:
abstract public void calculateArea();
Для абстрактний метод, реалізація не потрібна. Визначається лише сигнатура методу.
Приклад коду абстракції
abstract class Shape{ abstract void calculateArea(); } class guru99 extends Shape{ void calculateArea(){System.out.println("Area of Shape");} public static void main(String args[]){ Shape obj = new guru99(); obj.calculateArea(); } }
Переваги абстракції
- Основна перевага використання абстракції в Програмування полягає в тому, що він дозволяє групувати кілька пов’язаних класів як братів і сестер.
- Абстракція в об’єктно-орієнтованому програмуванні допомагає зменшити складність процесу проектування та реалізації програмного забезпечення.
Кінцеве ключове слово в Java
Останній модифікатор застосовується до класів, методів і змінних. Значення слова final варіюється від контексту до контексту, але основна ідея однакова.
- Останній клас не може бути успадкований
- Кінцева змінна стає константою, і її значення не можна змінити.
- Остаточний метод не можна перевизначити. Це робиться з міркувань безпеки, а ці методи використовуються для оптимізації.
Приклад : - Щоб вивчити абстрактні та кінцеві ключові слова
Крок 1) Скопіюйте наступний код у редактор.
abstract class Shape{ final int b = 20; public void display(){ System.out.println("This is display method"); } abstract public void calculateArea(); } public class Rectangle extends Shape{ public static void main(String args[]){ Rectangle obj = new Rectangle(); obj.display(); //obj.b=200; } //public void calculateArea(){} }
Крок 2) Збережіть, скомпілюйте та запустіть код.
Крок 3) Помилка =? Абстрактний метод не реалізований у класі Rectangle. Щоб вирішити проблему, розкоментуйте рядок №15.
Крок 4) Розкоментуйте рядок № 13. Збережіть і скомпілюйте код.
Крок 5) Помилка = ? змінна b є кінцевою
Коли використовувати абстрактні методи та абстрактний клас?
Абстрактні методи здебільшого оголошуються там, де два або більше підкласів також роблять те саме різними способами через різні реалізації. Він також розширює той самий абстрактний клас і пропонує різні реалізації абстрактних методів.
Абстрактні класи допомагають описати загальні типи поведінки та ієрархію класів об’єктно-орієнтованого програмування. Він також описує підкласи, щоб запропонувати деталі реалізації абстрактного класу.
Основна інформація:
- Абстракція в програмуванні — це процес вибору важливих наборів даних для Об'єкт у вашому програмному забезпеченні та залишаючи незначні.
- Після того як ви змоделювали свій об’єкт за допомогою абстракції даних у Java, той самий набір даних може використовуватися в різних програмах.