Встречается на собеседованиях • сегодня

В чем разница между абстрактным класом и интерфейсом

Абстрактный класс может содержать реализацию методов (в том числе неабстрактных), поля и конструкторы. Интерфейс до Java 8 мог содержать только абстрактные методы, но сейчас поддерживает дефолтные и статические методы, а также константы (public static final поля).

Класс может наследовать только один абстрактный класс, но реализовывать несколько интерфейсов.

Пример:

java
abstract class Animal {
    abstract void makeSound();
    void sleep() { System.out.println("Zzz"); } // реализованный метод
}

interface Flyable {
    void fly();
    default void land() { System.out.println("Landing..."); } // дефолтный метод
}

Используй абстрактный класс для общего поведения, а интерфейс — для определения контракта.

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы