Основы Dart 2.x (Классы и объекты) Часть II

Наследование

Dart не поддерживает множественное наследование как например С++, для того что бы избежать многих проблем связвнных с этим, например совпадение имен переменных и методов у предков класса и неоднозначности пути наследования в случае более чем двухуровневой иерархии. Но как альтернатива множественному наследованию в Dart выступают интерфейсы и миксины .
Интерфейсы
- Интерфейсы не содержат какой-либо реализации, но обеспечивают общий тип всем имплементациям (реализациям) всем дочерним классам. Для интерфейсов в Dart нет отдельного ключевого слова, это обычный класс, как правило - абстрактный.
Наследуется интерфейс ключевым словом implements.

Полиморфизм

Инкапсуляция

Инкапсуляция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (что у него внутри), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных методов и членов), а также объединить и защитить жизненно важные для компонента данные с помощью спецификаторов доступа private, protected, internal - Но в Dart спецификаторов доступа как таковых нет, а приватные поля класса начинается с подчеркивания "_", но инкапсуляция реализуется с помощью геттеров и сеттеров.
Getters и Setters
- Геттеры и сеттеры — это специальные методы, которые обеспечивают доступ для чтения и записи свойств объекта. Напомним, что каждая переменная класса определяет геттер, и (если это возможно) — сеттер. Вы можете создать дополнительные свойства для реализации геттеров и сеттеров, используя ключевые слова get и set:

Геттеры и сеттеры применяются во многих языках программирования (C++/C#/Java/Ruby)

Подборка заметок