Sobes.tech
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("Приземляется");
    }
}