- package
- 类似于文件夹
- 在某个包下面新建的文件,会自动在开头的部分添加package说明
- 在不同的包之间,移动文件,也能自动更新头部的package说明
- Scala 包支持传统声明和嵌套声明,推荐花括号方式(更清晰);
- 包对象是 Scala 特有,用于存放包级成员,通常放在
package.scala; - 导入语法支持重命名、过滤、局部导入,比 Java 更灵活;
- 访问权限可指定包范围(
private[包名]),精细化控制可见性。
// 包声明
package com.example.shop
// 包对象
package object cart {
val MAX_ITEM_COUNT: Int = 20
type ItemMap = Map[String, Int] // 商品名 -> 数量
}
// 包内的类
package cart {
class ShoppingCart(items: ItemMap) {
import cart._ // 导入包对象成员
def check(): Unit = {
if (items.size > MAX_ITEM_COUNT) {
println("Cart is full!")
} else {
println(s"Cart has ${items.size} items")
}
}
}
私有
package com.example.demo
class Item {
private val id: String = "item_001" // 仅当前类访问
protected def desc: String = "Default item" // 子类+同包可访问
}
class Book extends Item {
def show(): Unit = println(desc) // 子类可访问 protected 成员
}