Абстрактний Клас Проти Інтерфейсу
Свайпніть щоб показати меню
Що обрати
З попередніх розділів ви могли помітити, що abstract classes та interfaces досить схожі. Однак між ними існують відмінності. Якщо говорити коротко, то на практиці інтерфейси часто надають перевагу над абстрактними класами. Але давайте розберемося, чому це так.
У чому різниця
Для початку потрібно зрозуміти відмінності між абстрактним класом та інтерфейсом. Розглянемо їх у вигляді списку:
- Синтаксис:
abstract classпри оголошенні абстрактного класу таinterfaceпри оголошенні інтерфейсу; - Ключове слово для наслідування:
extendsдля наслідування абстрактного класу таimplementsдля наслідування інтерфейсу; - Назви для підкласів: Підклас
abstract classназивається підкласом або класом-нащадком, а підкласinterface— клас-реалізація; - Кількість наслідувань: Можна наслідуватися лише від одного абстрактного класу, але можна наслідуватися від кількох інтерфейсів;
abstract classможе містити як реалізовані, так і абстрактні методи. Починаючи з Java 8, інтерфейси також можуть міститиdefault-методи, про які ми поговоримо далі у цьому розділі;- Методи в абстрактному класі можуть мати будь-який модифікатор доступу, тоді як в інтерфейсах дозволено лише модифікатор доступу
public.
Note
Можна одночасно наслідуватися від абстрактного класу та реалізовувати інтерфейс. Спочатку використовується ключове слово
extends, а потім —implements. Синтаксис виглядає так:class ClassName extends AbstractClass implements Interface {}
Простими словами, абстрактний клас — це клас, який надає певну функціональність і встановлює певні правила, але залишає частину реалізації для своїх підкласів. Інтерфейс, навпаки, — це своєрідний перелік вимог, які клас повинен виконати, визначаючи які методи мають бути реалізовані, не надаючи при цьому жодного коду.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат