Отличие абстрактного класса и интерфейса

 


Когда использовать классы, а когда – интерфейсы? Нужно руководствоваться следующим подходом. Интерфейс описывает поведение и возможности своих реализаций. Обратите внимание на классические названия интерфейсов: 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.


Интерфейс - описывает поведение (катится, складывается, шифруется)

Класс абстрактный - описывает объект

Комментарии

Популярные сообщения из этого блога

namespace пространство имен

Трейты