快學Scala 第九課 (伴生對象和枚舉)
阿新 • • 發佈:2017-08-06
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 第九課 (伴生對象和枚舉)