对象

昵称已经被使用 / 2023-08-13 / 原文

第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方法返回