Экзамен ООП | Блок 5 Flashcards

1
Q

Что такое интерфейс?

A

Интерфейс является разновидностью абстрактного класса и представляет собой следующий шаг на пути к абстракции. Интерфейс позволяет абстрагировать методы-реализации от методов-потребителей. Интерфейс описывает форму, а класс, его реализующий - содержание. Таким образом, это своеобразный “пульт”, с которым взаимодействует метод-потребитель.

Для указания на то, что класс реализует (имплементирует) интерфейс используется ключевое слово implements. Если класс, реализует не все методы, описанные в интерфейсе, то он должен быть объявлен абстрактным и уже его подклассы должны реализовать недостающие методы.

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

Допустимые модификаторы доступа: По умолчанию и public. Для методов интерфейса неявно устанавливается модификатор public. Сам интерфейс должен быть явно объявлен как public.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Перечислите элементы, которые может содержать интерфейс.

A
  1. Поля (public, static, final) - Константы;
  2. Методы;
  3. Вложенные / внутренние классы и интерфейсы;
  4. Обобщенные типы (generics);
  5. Перечисления (ENUM);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Можно ли создать объект интерфейса? Если да, то как?

A

Интерфейс не может содержать конструкторов, так как интерфейс - это абсолютная абстракция, то есть вся реализация возложена на классы-реализации. По причине отсутствия конструкторов создать экземпляр интерфейса невозможно.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Может ли интерфейс содержать какие-либо методы с реализацией? Если да, то какие?

A
  1. Статические методы (static) - не наследуются. Используются для сохранения данных на уровне интерфейса.
  2. Дефолтные методы (default) - наследуются, могут быть переопределены в реализующем классе или интерфейсе - наследнике.
  3. Приватные методы (private) - могут быть static и нестатическими. Используются как служебные, для избежания дублирования кода.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

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

A

Интерфейс является абстрактным классом, но не наоборот.

Абстрактный класс - это класс, у которого не реализован один и более методов. Нужен для реализации семейства классов (Отношение IS-A). Выглядит как заготовка под будущую реализацию. Также это средство для повторного использования кода.

Интерфейс - это абстрактный класс, в котором все методы не реализованы (помимо default, private, static), а также нет нестатических переменных.

Интерфейс задаёт семантику класса. Вы всегда будете уверены, что класс, который реализует какой-либо интерфейс, реализует и все его методы, то есть поддерживает заданную семантику.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly