Scala 中的可见性规则与类型系统详解
1. 面向对象设计中的字段可见性原则
在面向对象设计中,传统观点认为字段应设为私有(private)或受保护(protected)。若需要访问字段,应通过方法进行,且并非所有内容都应默认可访问。这么做主要有两个原因:
- 防止用户在开发者无法控制的情况下修改可变字段。不过,使用不可变值可消除这一担忧。
- 特定字段可能属于实现细节,而非开发者想要暴露的公共抽象部分。
当访问合理时,统一访问原则的优点在于,我们可以为用户提供公共字段访问的语义,但根据任务需求选择使用方法或直接访问字段,用户无需知晓具体实现方式,甚至在修改实现时也无需强制用户修改代码,不过重新编译是必要的。
类型有两种“用户”:派生类型和处理该类型实例的代码。派生类型通常比实例用户更需要访问其父类型的成员。
2. Scala 可见性规则概述
Scala 的可见性规则与 Java 类似,但应用更一致且更灵活。例如,在 Java 中,若内部类有私有成员,外部类可以访问;而在 Scala 中,外部类无法访问私有成员,但 Scala 提供了另一种方式使该成员对外部类可见。
可见性关键字与 Java 和 C# 类似,如 private 和 protected 等修改可见性的关键字出现在声明开头,可用于类、字段和方法声明。还可在类的主构造函数上使用访问修饰符关键字,这会强制用户调用工厂方法而非直接实例化类型。
可见性范围总结如下表:
| 名称 | 关键字 | 描述 |
| — | — | — |
| public | 无 | 公共成员和类型在所有边界内都可
超级会员免费看
订阅专栏 解锁全文
66

被折叠的 条评论
为什么被折叠?



