Dart封装疑问:同文件可访问私有属性,分文件为何不可?
Dart中下划线私有成员的作用域说明
Dart 里用下划线(_)开头的成员(属性、方法),其私有作用域是当前文件,而非类本身——这是和很多面向对象语言(比如Java、C#)的核心区别。
同一文件能访问的原因
当User类和main函数放在同一个文件时,两者属于同一个文件作用域,所以代码里可以直接访问u._password,这完全符合Dart的私有规则。
分文件无法访问的原因
把User类移到单独的user.dart文件后,main函数所在的文件和user.dart是两个独立的文件作用域。此时_password作为user.dart文件内的私有成员,外部文件的代码没有访问权限,所以会报错。
简单总结:Dart的下划线私有是「文件私有」,不是「类私有」——只要在同一个文件里,不管是不是同一个类的代码,都能访问下划线开头的成员;跨文件则不行。
内容的提问来源于stack exchange,提问作者d3ridi
相关产品推荐
相关产品推荐

