首页 > 解决方案 > Flutter 类对象在没有 getter 的情况下访问私有字段

问题描述

嗨,我有点困惑,为什么 main 方法可以访问私有字段。

void main() {
  A obj = A();
  obj._b = 'a';
  print(obj._b);
}


class A {
  String _b;
}

输出:-

请看没有错误的截图。在此处输入图像描述

标签: flutterdart

解决方案


与 Java 不同,Dart 没有关键字 public、protected 和 private。

没有关键字或注释,因此您可以在类级别将字段/函数声明为私有,但您可以在 lib 范围内将字段/函数声明为私有成员。

因此,让我们来回答您的问题,您的主要方法能够访问以“_”开头的字段,因为它们在同一个包中。创建一个新文件并将您的类移动到该文件,您将无法访问私有成员。

所以,

以下划线 (_) 开头的标识符仅在库中可见。


推荐阅读