Junior — Middle
90
Une classe abstraite dont toutes les méthodes sont abstraites peut-elle être remplacée par une interface?
Réponse de l'IA
sobes.tech IA
Да, абстрактный класс, в котором все методы являются абстрактными, по сути, можно заменить интерфейсом.
Причины:
- Интерфейс предназначен для объявления только абстрактных методов (до Java 8), что совпадает с описанием класса, где все методы абстрактные.
- Интерфейсы позволяют реализовать множественное наследование, в отличие от классов.
Однако:
- Если абстрактный класс содержит поля или методы с реализацией, то заменить его интерфейсом нельзя без потери функционала.
- Начиная с Java 8, интерфейсы могут содержать методы с реализацией (default методы), что ещё больше сближает возможности интерфейсов и абстрактных классов.
Пример замены:
// Абстрактный класс
abstract class Shape {
abstract void draw();
}
// Интерфейс
interface Shape {
void draw();
}