Sobes.tech
Назад к вопросам
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");
    }
}

Ключевые отличия:

  • Класс может наследовать только один абстрактный класс, но может реализовывать несколько интерфейсов.
  • Абстрактный класс может содержать состояние, интерфейс — нет (только константы).
  • Интерфейсы больше ориентированы на контракт, абстрактные классы — на частичную реализацию.