Dart语言中的Private Properties(私有属性)具体指什么?
Dart 下划线开头私有属性的含义
Dart 中以下划线 _ 作为开头的标识符(包括属性、方法、类、顶级函数等),本质是库级别的私有标记,和其他常见编程语言的类私有机制有明显区别,具体规则如下:
- 私有范围限定在当前库内:默认单个
.dart文件就是一个独立的库,除非通过part/part of关键字把多个文件关联为同一个库。只有和该私有成员同属一个库的代码,才能直接访问这个成员,跨库/跨文件访问会被编译器直接拦截报错。 - 不属于类级私有:和 Java、C++ 等语言的类私有不同,只要是同一个库内的其他类、顶级函数,都可以直接访问下划线开头的成员,不会受到限制。
- 属于编译期约束:该私有规则仅在编译阶段生效,运行时没有强制校验限制。
代码示例解释
class OfficialName extends Name { // Private properties begin with an underscore final String _title; OfficialName(this._title, String first, String last) : super (first, last); @override String toString(){ // 注:此处存在笔误,正确写法应为 return '$_title. ${super.toString()}'; return 'S_title. ${super.toString()}'; } }
上述代码中的 _title 就是库私有属性,只要不在 OfficialName 所属的库内,外部代码既不能直接读取也不能修改 _title 的值,只能通过类暴露的公有方法(比如此处重写的 toString)间接获取相关信息。
补充注意事项
- 下划线开头的私有规则对所有标识符生效,不止是属性,你也可以用下划线开头声明私有方法、私有类、私有顶级函数。
- Dart 本身没有提供类级别的私有能力,如果希望成员仅能在当前类内部访问,只能通过团队编码规范来约束,语言层面没有对应的校验规则。
内容的提问来源于stack exchange,提问作者John Kim
相关产品推荐
相关产品推荐

