Абстрактный класс это базовый класс, который не предполагает создание экземпляров, он содержит характеристики
сущности, которые отличают ее от других сущностей. (смотри так же абстрактный метод)
Интерфейс это инструмент который описывает какие методы должен содержать класс потомок,
но не содержит реализацию сам.
Интерфейс - это инструмент, который указывает какие методы должен включать класс, без необходимости описания их функционала
/* Когда использовать интерфейс а когда абстракный класс? */
- Если хотим только описать работу класса потомка - тогда интерфейс
- Если можем реализовать какие то общие методы - тогда абстрактный класс
/* АБСТРАКТНЫЙ КЛАСС */
-свойства
-методы с реализацией
-объявляет методы без реализации
-создание экземпляра невозможно
-наследуется (extends)
-наследник имеет только одного родителя
Абстрактный класс может реализовать несколько интерфейсов
/* ИНТЕРФЕЙС */
-не имеет свойств
-нет методов с реализацией
-объявляет методы без реализации
(Реализация - это код который прописан в методе)
-создание экземпляра невозможно
-реализуется (implements)
-наследник может реализовывать методы нескольких интерфейсов
-все методы должны быть public
(пример с двумя интерфейсами ЛОДКА, МАШИНА - class MersedesAmphibius implements Car, Boat)
Паттерн проектирования - архитектурная конструкция, представляющая собой решение проблемы проектирования