Назад к вопросам
Junior
105
questionbank
Как разработать в Dart класс, чтобы все его поля были доступны только внутри самого класса и недоступны извне?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
class _MyPrivateClass {
// Поле доступно только внутри этого класса и файла.
String? _privateField;
// Конструктор также приватный.
_MyPrivateClass(this._privateField);
// Метод доступен только внутри этого класса и файла.
void _privateMethod() {
print('This is a private method.');
}
// Пример геттера, который может быть публичным,
// но возвращает значение приватного поля.
String? get publicGetter => _privateField;
// Пример публичного сеттера.
set publicSetter(String? value) {
_privateField = value;
}
}
// Другой класс в том же файле может получить доступ к приватным членам.
class AnotherClassInSameFile {
void accessPrivateClass() {
var privateInstance = _MyPrivateClass('Hello');
print(privateInstance._privateField); // Доступ разрешен
privateInstance._privateMethod(); // Доступ разрешен
}
}
// В другом файле:
// import 'your_file_name.dart'; // Необходимо импортировать файл
// void main() {
// var privateInstance = _MyPrivateClass('Hello'); // Ошибка: _MyPrivateClass недоступен
// print(privateInstance._privateField); // Ошибка: _privateField недоступен
// }
В Dart для обозначения приватных членов класса (полей, методов, конструкторов) используется префикс _. Члены с таким префиксом доступны только внутри файла, где они были объявлены. Сам класс также может быть помечен как приватный с помощью префикса _, что сделает его недоступным за пределами файла.