abstractclassUndoableAction(val description:String){
def undo():Unit
def redo():Unit
}
object DoNothingAction extendsUndoableAction("Do Nothing"){
override def undo(): Unit ={}
override def redo(): Unit ={}}
val actions =Map("open"->DoNothingAction,"save"->DoNothingAction)
Apply方法
Object(参数1,参数2,…,参数n) 会调用对象的apply方法,返回的是伴生类的对象
例如Array定义了apply方法,因此可以不用new Array,直接使用Array()
//类classAccountprivate(val id:Int,initialBalance:Double){private var balance = initialBalance
}//伴生对象
object Account{
def apply(initialBalance: Double): Account ={newAccount(newUniqueNumber,initialBalance)}private var lastNumber =0private def newUniqueNumber():Int={
lastNumber+=1
lastNumber
}}//使用时不用new了,伴生对象里定义了apply方法,里面已经new了
val sam =Account(12)
val bob =Account(400)println(bob.id)
应用程序对象
每个scala程序必须从一个main方法开始,方法的类型为Array[String] => Unit