Junior — Middle
86
Може ли апстрактна класа, у којој су све методе апстрактне, бити замењена интерфејсом?
Одговор од АИ
sobes.tech АИ
Да, абстрактный класс, в котором все методы являются абстрактными, по сути, можно заменить интерфейсом.
Причины:
- Интерфейс предназначен для объявления только абстрактных методов (до Java 8), что совпадает с описанием класса, где все методы абстрактные.
- Интерфейсы позволяют реализовать множественное наследование, в отличие от классов.
Однако:
- Если абстрактный класс содержит поля или методы с реализацией, то заменить его интерфейсом нельзя без потери функционала.
- Начиная с Java 8, интерфейсы могут содержать методы с реализацией (default методы), что ещё больше сближает возможности интерфейсов и абстрактных классов.
Пример замены:
// Абстрактный класс
abstract class Shape {
abstract void draw();
}
// Интерфейс
interface Shape {
void draw();
}