Scala 访问修饰符
Scala 使用访问修饰符控制类、字段、方法和构造器的可见性。合理使用访问控制可以隐藏实现细节,减少模块之间的耦合。
默认访问级别
Scala 中没有显式修饰符时,成员默认是公共的。
name 和 greet 都可以从外部访问。
private
private 成员只能在当前类或对象内部访问。
这里 balance 被隐藏,外部只能通过方法读取或修改。
protected
protected 成员可以在当前类和子类中访问。
private[this]
private[this] 将访问范围限制到当前对象实例,比普通 private 更严格。
包级私有
Scala 支持限定访问范围,例如 private[models] 表示该成员在 models 包内可见。
这在大型项目中很有用,可以让同一模块内协作,同时避免暴露给整个应用。
私有构造器
可以把构造器设为私有,用伴生对象控制实例创建。
最佳实践
- 默认保持 API 简洁,只公开调用者真正需要的成员
- 对内部状态使用
private - 对继承扩展点使用
protected - 对模块内部工具方法使用包级私有
- 不要为了方便测试而过度放开访问权限
小结
Scala 的访问控制比很多语言更灵活。掌握 private、protected、private[this] 和包级私有,可以让代码边界更清晰,也更容易维护。