Junior
Чӣ гуна бояд дар Dart синфро тарҳрезӣ кард, то ҳама майдонҳои он танҳо дар дохили синф дастрас бошанд ва берун аз он дастрас набошанд?
sobes.tech AI
Ҷавоб аз 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 для обозначения приватных членов класса (полей, методов, конструкторов) используется префикс _. Члены с таким префиксом доступны только внутри файла, где они были объявлены. Сам класс также может быть помечен как приватный с помощью префикса _, что сделает его недоступным за пределами файла.