Back to questions
Junior — Middle
113
Как правильно реализовать абстрактные классы в интерфейсах и в чем их отличие?
Answer from AI
sobes.tech AI
В Java абстрактный класс — это класс, который может содержать как реализованные методы, так и абстрактные (без реализации). Он служит для создания базового шаблона, от которого наследуются подклассы. Интерфейс же изначально содержал только абстрактные методы (без реализации), но начиная с Java 8, интерфейсы могут содержать методы с реализацией (default и static методы).
Отличия:
- Абстрактный класс может содержать состояние (поля), интерфейс — только константы (final static поля).
- Класс может наследовать только один абстрактный класс, но может реализовывать несколько интерфейсов.
- Абстрактный класс может иметь конструкторы, интерфейс — нет.
Пример абстрактного класса:
public abstract class Animal {
abstract void sound();
void breathe() {
System.out.println("Дышит");
}
}
Пример интерфейса:
public interface Flyable {
void fly();
default void land() {
System.out.println("Приземляется");
}
}