Scala 中也有虛類,至關於 C++ 的純虛類,不能本身實例化。能夠定義一個匿名的子類來實例化生成對象。匿名子類的寫法是使用父虛類後面跟着大括號,在裏面覆蓋 override 父類的方法。java
abstract class Listener { def trigger } object scala { def main(args: Array[String]) = { var myListener = new Listener{ def trigger() {println(s"Trigger at ${new java.util.Date}")} } myListener.trigger() } }
myListener 後面跟着的就是匿名子類的定義,定義的同時實例化生成 myListener。ide
結果打印函數
Trigger at Mon Dec 26 17:12:55 CST 2016
scala
Listener 用來接收消息,Listening 類用來發送消息。code
abstract class Listener { def trigger } class Listening { var listener: Listener = null def register(l: Listener) {listener = l} def sendNotification() { listener.trigger } } object scala { def main(args: Array[String]) = { var notification = new Listening() notification.register(new Listener { def trigger { println(s"Trigger at ${new java.util.Date}") } }) notification.sendNotification() } }
notification 是發送消息類 Listening 的子類,調用方法 register 註冊接受消息的對象,在生成註冊對象時,也定義了匿名子類 Listener 。最後使用 sendNotification 接口往 Listener 發送消息。對象