Продолжаем говорить про ООП. В предыдущих сериях:
🔹 ООП в Dart: особенности реализации
🔹 Особенности инкапсуляции в Dart
🔹 Особенности наследования в Dart
В рамках ООП абстрагирование — способ выделить набор наиболее важных атрибутов и методов и исключить незначимые. С абстракцией мы постоянно сталкиваемся в обычной жизни: например, рассуждаем о сложном механизме типа смартфона, не упоминая отдельные детали, из которых он состоит.
Абстрактные классы
В Dart существуют абстрактные классы. От обычных классов они отличаются тем, что создать объект такого класса нельзя. Абстрактный класс нужен, чтобы от него могли наследоваться потомки — обычные классы, объекты которых создавать можно.
Абстрактные классы иногда путают с интерфейсами👇👇👇
Интерфейсы
Интерфейс действительно похож на абстрактный класс. На самом деле это не класс, а пустышка с перечислением абстрактных методов без имплементации. Интерфейс имеет декларативную природу: чистый контракт без кода.
В языке Dart абстрактный класс и интерфейс создаются одинаково:
abstract class ClassName {}При реализации интерфейсов важно помнить про четвертый принцип SOLID — принцип разделения интерфейса (ISP), который призывает не создавать универсальные интерфейсы.
Вместо этого лучше разделять их на более мелкие и специализированные.
