class ChecksumAccumulator {
// class definition goes here
}
你就能建立 ChecksumAccumulator 對象:
new CheckSumAccumulatorjava
注:1scala類中成員默認是public類型,若設爲私有屬性則必須加private關鍵字。在scala中是public屬性的地方能夠省略public關鍵字。函數
2 Scala裏方法參數的一個重要特徵是他們都是val,不是var,this
eg:spa
def add(b: Byte): Unit = {scala
b += 1 // 編譯不過,由於 b 是 valorm
sum += b對象
}blog
3 def默認返回時Unit,若爸「Unit=」去掉,則def默認返回的值會轉換成Unit,若要指定返回類型,這須要將Unit指定爲要轉換的類型:ci
Unit 是函數f 聲明的結果類型。 Scala 編譯器會把一個以過程風格定義的方法,就是說,帶有大括號但沒有等號的,在本質上看成是顯式定義結果類型爲Unit 的方法。例如:get
scala> def g() { "this String gets lost too" }
g: () Unit
所以,若是你本想返回一個非Unit 的值,卻忘記了等號時,那麼困惑就出現了。因此爲了獲得你想要的結果,你須要插入等號:
scala> def h() = { "this String gets returned!" }
h: () java.lang.String
scala> h
res0: java.lang.String = this String gets returned!
Scala比java更爲面向對象的特色之一是Scala不能了定義靜態成員,而是代之定義單例對象。
單例對象:Object 代替class關鍵字:
當單例對象與某個類共享同一個名稱時,他被稱做是這個類的伴生對象:companion object。你必須在同一個源文件裏定義類和它的伴生對象。類被稱爲是這個單例對象的伴生類:companion class。類和它的伴生對象能夠互相訪問其私有成員。
類和單例對象間的一個差異是,單例對象不帶參數,而類能夠。由於你不能用new關鍵字實例化一個單例對象,你沒機會傳遞給它參數。每一個單例對象都被做爲由一個靜態變量指向的虛構類:synthetic class的一個實例來實現,所以它們與Java靜態類有着相同的初始化語法。
不與伴生類共享名稱的單例對象被稱爲獨立對象
3 Scala 程序
特別要指出的是,單例對象會在第一次被訪問的時候初始化。不與伴生類共享名稱的單例對象被稱爲孤立對象: standalone object。
要執行 Scala 程序,你必定要提供一個有main 方法(僅帶一個參數,Array[String] ,且結果類型爲Unit)的孤立單例對象名。任何擁有合適簽名的 main 方法的單例對象均可以用來做爲程序的入口點。代碼:
編譯scala源程序:
scalac xxx.scala
這將編譯你的源文件,不過在編譯完成以前或許會有一個可感知的停頓。緣由是每次編譯器啓動時,都要花一些時間掃描jar 文件內容,並在即便你提交的是新的源文件也在查以前完成其餘初始化工做。所以,Scala 的發佈包裏還包括了一個叫作fsc(快速Scala編譯器)的Scala 編譯器後臺服務:daemon。你能夠這樣使用:
fsc xxx.scala 快速編譯