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

Зачем нужен интерфейс, если есть абстрактный класс

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

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

  • Класс может реализовать несколько интерфейсов, но унаследовать только один класс (включая абстрактный).
  • Интерфейс (с Java 8+) может содержать default-методы, но не состояние (поля), тогда как абстрактный класс может иметь поля и конструкторы.

Пример:

java
interface Flyable {
    void fly(); // контракт без реализации
}

abstract class Bird {
    protected String name;
    public Bird(String name) { this.name = name; }
    abstract void makeSound(); // абстрактный метод
}

Когда что использовать:

  • Интерфейс: для определения поведения, которое могут реализовать разные классы.
  • Абстрактный класс: для частичной реализации и общего состояния в иерархии наследования.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

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