Зміст курсу
Java ООП
Java ООП
Абстрактний Клас Проти Інтерфейсу
Що обрати?
З попередніх розділів ви могли помітити, що 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 {}
Простіше кажучи, абстрактний клас — це клас, який надає певну функціональність і встановлює певні правила, але залишає частину реалізації для своїх підкласів. Інтерфейс, навпаки, — це своєрідний перелік вимог, які клас повинен виконати, визначаючи які методи мають бути реалізовані, але не містить жодної реалізації.
Дякуємо за ваш відгук!