Имя с подчеркиванием у наследника в Dart
Имя, начинающееся с _, в Dart приватно для библиотеки
(файла), а не для одного класса. Поле _title у Post
видно другим классам в том же файле, в том числе потомку:
class Post {
String _title = "";
void setTitle(String title) {
_title = title;
}
String getTitle() {
return _title;
}
}
class Note extends Post {
void prefixTitle(String prefix) {
_title = prefix + _title;
}
}
Потомок в том же файле может читать и менять _title
напрямую. Если класс Note перенести в другой файл
той же программы, обращение к _title родителя
не скомпилируется - для другого файла это чужое имя библиотеки.
Тот же принцип действует для методов с ведущим подчеркиванием:
потомок в одном файле может вызвать _validate родителя,
из другого файла - нет:
class Post {
bool _validate(String value) {
return value.isNotEmpty;
}
}
class Note extends Post {
bool check(String value) {
return _validate(value);
}
}
Перенесите класс Note
в отдельный файл и попробуйте
обратиться к _title
из метода потомка.