对象
第6章 对象
6.1 单例对象
Scala 中没有静态的概念,类似的Scala提供了单例对象 object
object Accounts{
private var lastNumber = 0
}
用处:
作为存放工具函数或常量的地方
高效的共享单个不可变的实例
需要用单个实例来协调某个服务时
6.2 伴生对象
当单例对象和某个类共享一个名称时,单例对象被称为伴生对象(companion object);类和它的伴生对象必须定义在同一个源文件里
class Employee (var name:String, var address: String) {
var phoneNum = "123499299"
//可以直接访问伴生对象的属性
def infoComObj = println(s"companion class call companion obj:"+Employee.gender )
//println(infoComObj);
}
object Employee{
var gender = "male"
def apply(eName: String, eAddress: String) = new Employee(eName, eAddress)
}
6.3 枚举
object m extends Enumeration{
val a, b, c = Value //等同于将Value方法分别给a,b,c初始化
}
每次调用Value都会返回内部的新实例,该内部类也叫Value
枚举的类型是m.Value,而不是m
枚举的值可通过id方法返回,名称课通过toString方法返回