[scala] scala 对象(六)

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)
} }

  

posted @ 2017-04-19 23:33  snow__wolf  阅读(147)  评论(0)    收藏  举报