一、Scala單例對象
Scala單例對象是十分重要的,沒有像在Java同樣,有靜態類、靜態成員、靜態方法,可是Scala提供了object對象,這個object對象相似於Java的靜態類,它的成員、它的方法都默認是靜態的。編程
//若是object的靜態成員要被外界訪問,則該成員不能被private修飾函數
object University{ 工具
private var studentNo = 0 this
def newStudentNo = { studentNo += 1 studentNo } spa
} scala
object objecOps { def main (args : Array[String]) : Unit = {3d
println(University.newStudentNo) println(University.newStudentNo) } code
}對象
二、Scala伴生對象
若是有一樣一個類與該object名字同樣,則稱該object爲該類的伴生對象,相對應,該類爲object的伴生類。若是一個類有它的伴生對象,這個類就可經過object的名字訪問到全部成員,但object不在該類的做用範圍。blog
class University{ val id = University.newStudentNo private var number = 0 def aClass (number : Int){this.number += number} } object University { private var studentNo = 0 def newStudentNo = { studentNo += 1 studentNo } }
object對象爲靜態常量、靜態變量區域,能夠直接調用,共享全局變量頗有意義,伴生對象方便類的構建,可作爲當前類的靜態方法、成員的集合。
伴生對象首先是一個單例對象,單例對象用關鍵字object定義。在Scala中,單例對象分爲兩種,一種是並未自動關聯到特定類上的單例對象,稱爲獨立對象
(Standalone Object);另外一種是關聯到一個類上的單例對象,該單例對象與該類共有相同名字,則這種單例對象稱爲伴生對象(Companion
Object),對應類稱爲伴生類。
這是一個典型的伴生類和伴生對象的例子,注意如下說明: