Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Принципи ООП: Абстракція | Section
Основи Об'єктно-Орієнтованого Програмування Java

bookПринципи ООП: Абстракція

Свайпніть щоб показати меню

Абстракція

Отже, ми дійшли до останнього, але дуже важливого принципу ООП: Абстракція. Слово «абстракція» звучить досить абстрактно, і коротко цей принцип говорить нам, що ми повинні залежати від абстракції, а не від конкретної реалізації. Проте зараз це може здаватися складним. Почнемо з визначення:

Наприклад, у нас є клас Person,, і від нього наслідуються багато різних класів. Person має різні поля та методи, спільні для всіх класів. Однак, коли ми маємо клас BasketballPlayer,, характеристика height стає вирішальною, тоді як для класу Driver height є несуттєвою і неважливою. Саме тут і застосовується абстракція. Наслідуючи від абстракції, ми можемо зробити параметр height необов’язковим, щоб не використовувати його там, де це не потрібно.

Це може здаватися складним, тому перейдемо до прикладу:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Клас Car не представляє щось конкретне. Не існує просто Car; є седани, вантажівки, трактори. Тому ми будемо використовувати абстракцію під назвою Car. Щоб спростити: Car — це шаблон, на основі якого створюються конкретні класи автомобілів.

Зверніть увагу на синтаксис:

public abstract class className{ }.

Це синтаксис для оголошення абстрактного класу. Також зверніть увагу на синтаксис оголошення абстрактного методу:

public abstract returnValue methodName();

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

Розглянемо детальніше, що таке абстрактний клас:

Зверніть увагу, що не можна створити об'єкт абстрактного класу; це призведе до помилки:

Абстрактні класи звільняють нас від роботи лише з "об'єктами"; вони надають базовий стан і поведінку. Наприклад, у випадку з автомобілями, кожен автомобіль повинен мати модель, рік випуску, максимальну швидкість і колір. Також вони повинні мати можливість рухатись і зупинятись. Це все; далі ви будете створювати свої конкретні класи на основі цього абстрактного шаблону.

Правила створення абстрактного класу

  1. Абстрактний клас — це клас, який містить щонайменше один абстрактний метод. Можна створити абстрактний клас без абстрактних методів, але тоді він не матиме сенсу. Неможливо створити об'єкти абстрактного класу;
  2. Абстрактні методи можуть існувати лише в абстрактному класі; не можна створювати абстрактні методи поза абстрактним класом;
  3. Методи в абстрактному класі можуть бути як абстрактними, так і з реалізацією;
  4. Клас, який наслідує абстрактний клас, повинен перевизначити всі абстрактні методи;
  5. Можна наслідувати лише один клас (абстрактний або не абстрактний);
  6. Абстрактний клас повинен представляти спільні властивості та поведінку своїх класів-нащадків. Це питання буде розглянуто детальніше під час вивчення принципів SOLID.

Розглянемо приклад, щоб зрозуміти, як підкласи повинні перевизначати абстрактні методи, наслідуючи абстрактний клас, на прикладі дочірнього класу Truck:

Ось код із скріншоту, переписаний для кращої читабельності та зрозумілості:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Розгляньмо детальніше, що написано вище:

  • Перший слайд: Створюється підклас Truck, який успадковується від абстрактного класу Car. IDE підказує реалізувати обов'язкові методи;

  • Другий слайд: Відбувається перевизначення необхідних методів. Наприклад, зазначається, що Truck почав рух і потім зупинився;

  • Третій слайд: Створюється об'єкт у методі main. Зверніть увагу на використаний синтаксис: Car name = new Truck();. Створення об'єкта починається через абстракцію і завершується конкретною реалізацією. Це називається композицією. Далі за потреби присвоюються значення полям і викликаються перевизначені методи.

Voilà! Якщо все зрозуміло, ви навчилися використовувати абстрактний клас!

Підсумок

Абстракція — це, ймовірно, найскладніший для розуміння принцип ООП, і цілком можливо, що зараз ви ще не все засвоїли. Але не думайте, що ви в цьому самі. Абстракція — це концепція, яку спочатку важко зрозуміти більшості розробників. З часом ви краще зрозумієте, як ефективно працювати з абстракцією та абстрактними класами. Абстракція — це ключовий принцип, оскільки вона дозволяє робити програми розширюваними та дуже гнучкими.

1. Що таке абстракція в об'єктно-орієнтованому програмуванні?

2. Які з наступних тверджень є правильними щодо абстракції?

3. Яке призначення абстрактного класу в Java?

4. Як абстракція сприяє підтримуваності коду?

question mark

Що таке абстракція в об'єктно-орієнтованому програмуванні?

Select the correct answer

question mark

Які з наступних тверджень є правильними щодо абстракції?

Select all correct answers

question mark

Яке призначення абстрактного класу в Java?

Select the correct answer

question mark

Як абстракція сприяє підтримуваності коду?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 20

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 20
some-alt