Чи можуть абстрактні класи ніколи не мати екземплярів?
Абстрактні класи не можуть бути створені, але вони можуть бути підкласами. Коли абстрактний клас є підкласом, підклас зазвичай забезпечує реалізації для всіх абстрактних методів у своєму батьківському класі.
Абстрактні класи важливі в об’єктно-орієнтованому програмуванні, оскільки вони забезпечують спосіб визначення спільної поведінки для групи пов’язаних класів. Використовуючи абстрактні класи, ви можете переконатися, що певні методи реалізовані у всіх похідних класах, а також дозволити налаштування через перевизначення методів.
Абстрактні класи можуть мати змінні екземпляра (вони успадковуються дочірніми класами). Інтерфейси не можуть. Нарешті, конкретний клас може розширювати лише один клас (абстрактний чи інший). Однак конкретний клас може реалізувати багато інтерфейсів.
Не може мати поля (крім статичних кінцевих констант). Не може мати конструкторів. Клас може реалізувати кілька інтерфейсів (множинне успадкування). Методи в інтерфейсах є абстрактними за замовчуванням (до Java 8, коли були представлені методи за замовчуванням).
Абстрактний клас — це клас, який не може мати прямих екземплярів. Абстрактний клас не має прямих екземплярів ні логічно, ні за визначенням.
Абстрактні класи не можуть бути створені, але вони можуть бути підкласами. Коли абстрактний клас є підкласом, підклас зазвичай забезпечує реалізації для всіх абстрактних методів у своєму батьківському класі. Однак, якщо це не так, тоді підклас також має бути оголошено abstract.