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

Как определить абстрактный класс или интерфейс

Абстрактный класс объявляется с ключевым словом abstract и может содержать как абстрактные методы (без реализации), так и обычные методы. Нельзя создать экземпляр абстрактного класса напрямую.

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

Пример:

java
// Абстрактный класс
abstract class Animal {
    abstract void makeSound(); // абстрактный метод
    void sleep() { System.out.println("Zzz"); } // обычный метод
}

// Интерфейс
interface Movable {
    void move(); // абстрактный метод
    default void stop() { System.out.println("Stopped"); } // default метод
}

Ключевые различия:

  • Класс может наследовать только один абстрактный класс, но множество интерфейсов
  • Абстрактный класс может иметь поля и конструкторы, интерфейс - только константы (public static final)
  • Абстрактный класс описывает "is-a" отношение, интерфейс - "can-do" отношение
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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