1. 程式人生 > >快學Scala 第九課 (伴生對象和枚舉)

快學Scala 第九課 (伴生對象和枚舉)

over objectc yellow str imp 擴展類 new 伴生對象 ray

Scala沒有靜態方法和靜態字段, 你可以用object這個語法結構來達到同樣的目的。

對象的構造器只有在第一次被使用時才調用。

伴生對象apply方法:

類和它的伴生對象可以互相訪問私有特性,他們必須存在於同一個源文件。

類中要訪問類的伴生對象中成員,需要通過類.成員調用。

class Account private (val id: Int, initialBalance: Double){
  
}

object Account {
  def apply(initialBalance: Double)={
    new Account(1, initialBalance)
  }
}

object ObjectClassDemo {
  def main(args: Array[String]): Unit = {

    val a = Account(1)
    

  }
}

對象擴展類或特質:

object DoNothingAction extends UndoableAction("Do nothing"){
   override def undo(){
     
   }
   override def redo(){
     
   }
}

object ObjectClassDemo {
  def main(args: Array[String]): Unit = {
    val actions = Map ("open" -> ObjectClassDemo)
  }
}

應用程序對象:

object Hello extends App{
  println(args)
  
}

枚舉:

繼承Enumeration, 它是一個抽象類

object EnumColor extends Enumeration {

  type V = Value
  val Red = Value(1, "red")
  val Yellow = Value(2, "yellow")
  val Blue = Value(3, "blue")

  def main(args: Array[String]): Unit = {
    println(EnumColor.Red)
    println(EnumColor(2))
    println(EnumColor.withName("red"))
    import EnumColor.Value
    println(Red)

    for (c <- EnumColor.values) {
      c match {
        case EnumColor.Red    => println("get red")
        case EnumColor.Yellow => println("get yellow")
        case EnumColor.Blue   => println("get blue")
      }
    }

  }

}

  

快學Scala 第九課 (伴生對象和枚舉)