Назад к вопросам
Junior — Middle
67
Чем отличается реализация методов в аabstract классе от определения методов в интерфейсе?
Ответ от нейросети
sobes.tech AI
Основные отличия между реализацией методов в абстрактном классе и определением методов в интерфейсе в Java:
- Абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией. Он может иметь состояние (поля).
- Интерфейс до Java 8 мог содержать только объявления методов без реализации. Начиная с Java 8, интерфейсы могут содержать методы с реализацией по умолчанию (
defaultметоды) и статические методы.
Пример абстрактного класса:
public abstract class Animal {
public abstract void makeSound();
public void breathe() {
System.out.println("Breathing");
}
}
Пример интерфейса с методом по умолчанию:
public interface Animal {
void makeSound();
default void breathe() {
System.out.println("Breathing");
}
}
Ключевые отличия:
- Класс может наследовать только один абстрактный класс, но может реализовывать несколько интерфейсов.
- Абстрактный класс может содержать состояние, интерфейс — нет (только константы).
- Интерфейсы больше ориентированы на контракт, абстрактные классы — на частичную реализацию.