Получи случайную криптовалюту за регистрацию!

Особенности инкапсуляции в Dart Привет! С вами Дима Шевченко, | Surf Flutter Team

Особенности инкапсуляции в Dart

Привет! С вами Дима Шевченко, Flutter-разработчик Surf, и мы продолжаем серию постов про ООП.

Первый пост: что такое ООП

Сегодня поговорим про инкапсуляцию.

Инкапсуляция – свойство системы, позволяющее:

объединить данные и методы, работающие с ними, в классе.
скрыть детали реализации от пользователя,
открыть только то, что необходимо при последующем использовании.

Коммуникации в подвале дома, внутренности смартфона или автомобиля — так выглядит инкапсуляция в реальной жизни

Чтобы скрыть данные, во многих ООП-языках существуют модификаторы доступа:

publiс — к свойству и методу может получить доступ любой желающий;
private — к свойству и методу могут обращаться только методы данного класса;
protected — то же, что и private, только доступ получают и наследники класса в том числе.

В языке Dart отдельных модификаторов доступа нет

Приватность свойств и методов можно задать только на уровне файла. Приватными считаются все члены класса, чьё имя начинается с подчеркивания "_".

class Person {
final String _name;
final DateTime _birthday;

Person(this._name, this._birthday);

int getAge() => DateTime.now().difference(_birthday).inDays ~/ 365;
}

Для обозначения protected можно использовать аннотацию @рrotected из пакета meta: она предупреждает о неверном поведении, если использовать свойство вне наследника или родителя.

______
В следующих постах продолжим разговор про ООП: разберём особенности наследования, абстракции и полиморфизма в Dart