Назад к вопросам
Junior
246
questionbank

Какие существуют модификаторы доступа в языке Dart?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В языке Dart модификаторы доступа отсутствуют в традиционном понимании (public, private, protected). Контроль доступа реализуется на уровне библиотек (файлов).

  • Видимость в пределах файла (модуля): Все идентификаторы (переменные, функции, классы, методы), не начинающиеся с подчеркивания (_), являются публичными и доступны за пределами файла, в котором они объявлены.
  • Видимость в пределах библиотеки (файла): Идентификаторы, начинающиеся с подчеркивания (_), являются "приватными" в пределах файла (библиотеки), в котором они объявлены. Они не доступны из других файлов.

Пример:

// file_a.dart

class PublicClass {
  // Публичный метод
  void publicMethod() {
    print("Это публичный метод.");
  }

  // Приватная переменная - доступна только в file_a.dart
  String _privateVariable = "Приватная переменная";

  void accessPrivate() {
    print("Доступ к приватной переменной из того же файла: $_privateVariable");
  }
}

// Публичная функция
void publicFunction() {
  print("Это публичная функция.");
}

// Приватная функция - доступна только в file_a.dart
void _privateFunction() {
  print("Это приватная функция.");
}
// file_b.dart - импортирует file_a.dart

import 'file_a.dart';

void main() {
  var publicObj = PublicClass();
  publicObj.publicMethod(); // Доступно
  //publicObj._privateVariable; // Ошибка: _privateVariable не доступно
  publicObj.accessPrivate(); // Доступно, так как метод publicMethod в PublicClass

  publicFunction(); // Доступно
  //_privateFunction(); // Ошибка: _privateFunction не доступно
}