Страницы

Поиск по вопросам

четверг, 31 января 2019 г.

Зачем нужны абстрактные классы коллекций помимо интерфейсов?

Почему в Java, кроме интерфейсов коллекций, есть соответствующие им абстрактные классы. Например, есть интерфейс Collection. и абстрактный класс AbstractCollection, List и AbstractList. Почему недостаточно только интерфейса?


Ответ

Абстрактные классы - это helper-классы, предоставляющие базовую умолчательную "скелетную" реализацию функциональности соответствующих интерфейсов. Например, класс AbstractCollection предоставляет пользователю "скелетную" реализацию интерфейса Collection. Для того, чтобы реализовать свою коллекцию, вам нужно просто унаследоваться от AbstractCollection и предоставить свои собственные реализации тех методов, которые специфичны для вашей коллекции. А те, которые неспецифичны - просто унаследуются в готовом виде из AbstractCollection. Таким образом вам не нужно будет писать ворох "скучных" методов с тривиальной или рутинной реализацией.
В то же время вы не обязаны пользоваться AbstractCollection. Вы имеете полное право, если вам так захочется, реализовать интерфейс Collectionсвоими силами, с нуля, не пользуясь услугами AbstractCollection
Точно также проведено разделение между List и AbstractList

Комментариев нет:

Отправить комментарий