Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Абстракція Принципів ООП | ООП
Practice
Projects
Quizzes & Challenges
Вікторини
Challenges
/
Java ООП

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

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

Абстракція

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

Наприклад, у нас є клас 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

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

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

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

Секція 2. Розділ 7

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Секція 2. Розділ 7
some-alt