package org.foo
package bar.example
// 完整的包路径是org.foo.bar.example
- package内只能声明类,不能声明变量、方法,从面相对象角度看包也是对象,在包里声明变量和方法使用package object
package object foo{ // 在foo包下
val field:String = "A"
def function(i:Int):Unit={}
}
package foo1 {
package object foo2 { // 包对象
val book = "scala"
def fun(): Unit = {
println("包对象")
}
}
class BarA { // 包中定义类
var name: String = _ // 类中可以声明属性
}
package foo2 {
class BarA {
var age: Int = _
}
object PackageExample {
def main(args: Array[String]): Unit = {
val bar1 = new BarA //就近原则,使用foo2包下的BarA
bar1.age = 3
val bar2 = new foo1.BarA //明确使用foo1包下的BarA
bar2.name = "bar"
fun() //调用包对象中的方法
println(book) // 调用包对象中的属性
}
}
}
}