Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: oop, interface, abstract class

Чем интерфейс отличается от абстрактного класса?

Вопрос проверяет знание ключевых различий между интерфейсами и абстрактными классами в Java.

Короткий ответ

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


Длинный ответ

1. Реализация:

  • Интерфейс:

    • До Java 8: только абстрактные методы.

    • С Java 8+: default и static методы.

  • Абстрактный класс:

    • Может содержать реализованные методы и поля.

2. Наследование:

  • Интерфейс: класс может реализовать несколько интерфейсов.

  • Абстрактный класс: класс может наследовать только один абстрактный класс.

3. Конструкторы:

  • Интерфейс: не имеет конструкторов.

  • Абстрактный класс: может иметь конструктор.

Пример:

interface Flyable {
    	void fly(); // Абстрактный метод
}

abstract class Bird {
    	String name;
    	abstract void makeSound(); // Абстрактный метод
    	void eat() { System.out.println("Eating..."); } // Реализованный метод
}

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

  • Интерфейс: Для определения контракта (например, Comparable, Runnable).

  • Абстрактный класс: Если нужна общая реализация для родственных классов (например, шаблонный метод).

Уровень

  • Рейтинг:

    1

  • Сложность:

    7

Навыки

  • Java

    Java

Ключевые слова

#oop

#interface

#abstract class

Подпишись на Java Developer в телеграм