Когда использовать классы, а когда – интерфейсы? Нужно руководствоваться следующим подходом.
Интерфейс описывает поведение и возможности своих реализаций. Обратите внимание на
классические названия интерфейсов: Throwable, Countable, Comparable, Iterable, Rollable
(катящийся), Foldable (складывающийся). А абстрактный класс описывает сущность – например, стол:
Table_Abstract. Стол может быть деревянным: Table_Wood extends Table_Abstract. Или
хирургическим: Table_Surgical extends Table_Abstract. В таком случае Table_Abstract объединяет
общие свойства всех столов (площадь поверхности, наличие ножек и т.п.). А конкретный класс
описывает сущность определенного типа столов.
Связь интерфейсов и классов описывает свойства. Например, стол можно катить: Table_Abstract
implements Rollable. Деревянный стол можно сложить: Table_Wood implements Foldable.
Интерфейс - описывает поведение (катится, складывается, шифруется)
Класс абстрактный - описывает объект
Комментарии
Отправить комментарий