1、单例对象和伴生对象
2、定义单利对象的apply方法可不通过构造器直接创建对象
3、extends 来扩展单例对象
4、枚举实现
/** * 单例对象 * * @author xuejz * @date 2017-04-13 16:41 * @since 1.8 */ //单例对象 class Parent extends Action(12){ //调用伴生对象的无参方法 val pson =if(Parent.son==0) 1 else Parent.newSon val son=0 } //伴生对象 object Parent{ private var son:Int=0 private def newSon():Int={son+=1;son} //定义apply方法 def apply(id:Int)={ new Parent } }
/** * @author xuejz * @date 2017-04-13 16:55 * @since 1.8 */ class Action(val defineId:Int){ private val init:Int=defineId var createTime = new Date() def id=init def id_=(newId:Int):Unit=this.id=id }
枚举
/** * 枚举类 * 继承Enumeration * @author xwolf * @date 2017-04-19 23:17 * @since 1.8 */ object Colors extends Enumeration{ val red,yellow,green,black=Value val yarn=Value("yarn") }
测试:
object ParentTest { def main(args: Array[String]): Unit = { val parent = new Parent println(parent.pson) println(parent.id) println(parent.createTime) //定义apply 方法 val p =Parent(43) println(p.id)
//枚举调用
println(Colors.red)
println(Colors.withName("black"))
println(Colors.yarn)
} }