./com/horstmann/impatient
目录中。 // Manager.scala
package com {
package horstmann {
package impatient {
class Manager(name: String) {
def description = "A manager with name " + name
}
}
}
}
package com {
package horstmann {
package impatient {
class Employee(id: Int) {
def description = "An employee with id " + id
}
}
}
}
package org {
package bigjava {
class Counter {
private var value = 0
def increment() { value += 1 }
def description = "A counter with value " + value
}
}
}
Scala的包作用域支持嵌套,包路径都是相对的。
java.lang
、scala
和Predef
总是被引入,这种引入被称为隐式引入。
package com.horstmann.impatient {
package people {
class Person(val name: String) {
val friends = new collection.mutable.ArrayBuffer[Person]
// com和com.hosrstmann的成员这里不可见
def description = name + " with friends " +
friends.map(_.name).mkString(", ")
}
}
}
package
语句,不带花括号。 package com.horstmann.impatient
class Car
package com.horstmann.impatient
package object people {
val defaultName = "John Q. Public"
}
package people {
class Person {
var name = defaultName // A constant from the package
def description = "A person with name " + name
}
}
// Run as scala com.horstmann.impatient.Main
object Main extends App {
val john = new com.horstmann.impatient.people.Person
println(john.description)
}
private[包名]
达到同样效果。 package com.horstmann.impatient
package object people {
val defaultName = "John Q. Public"
}
package people {
class Person {
var name = defaultName // A constant from the package
private[impatient] def description = "A person with name " + name
}
}
引入让你可以使用更短的名称
import java.awt.Color
引入包的全部成员,也可以引入类或对象的全部成员。
import java.awt._
任何地方都可以出现import引入,作用到该块的结尾。
只项引入几个成员,使用选择器。
import java.awt.{Color, Font}
重命名选到的成员。
import java.util.{HashMap => JavaHashMap}
HashMap => _
是用来隐藏某个成员。
【待续】
内容来源于网络,如有侵权,请联系作者删除!