You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart封装疑问:同文件可访问私有属性,分文件为何不可?

Dart中下划线私有成员的作用域说明

Dart 里用下划线(_)开头的成员(属性、方法),其私有作用域是当前文件,而非类本身——这是和很多面向对象语言(比如Java、C#)的核心区别。

同一文件能访问的原因

当User类和main函数放在同一个文件时,两者属于同一个文件作用域,所以代码里可以直接访问u._password,这完全符合Dart的私有规则。

分文件无法访问的原因

把User类移到单独的user.dart文件后,main函数所在的文件和user.dart是两个独立的文件作用域。此时_password作为user.dart文件内的私有成员,外部文件的代码没有访问权限,所以会报错。

简单总结:Dart的下划线私有是「文件私有」,不是「类私有」——只要在同一个文件里,不管是不是同一个类的代码,都能访问下划线开头的成员;跨文件则不行。

内容的提问来源于stack exchange,提问作者d3ridi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:45:25