2022-11-03 15:04:01
Особенности инкапсуляции в 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
360 viewsedited 12:04