8.1單例對象
Scala中沒有靜態(tài)方法和靜態(tài)字段,你可以用object 這個語法結(jié)構(gòu)來達到同樣的目的。
對象的構(gòu)造器在該對象第一次使用時調(diào)用。如果對象沒有使用過,他的構(gòu)造器也不會被執(zhí)行。
對象基本具有類的所有特性,就是一點,你不能設(shè)置構(gòu)造器的參數(shù)。
8.2伴生對象
Java中會有類既有實例方法又有靜態(tài)方法的類。Scala中可以通過伴生對象進行實現(xiàn)。
類和它的伴生對象可以相互訪問私有特性,他們必須存在同一個源文件中。必須同名
8.3Apply方法
我們通常會定義和使用對象的apply方法,當遇到如下形式時:
Object(參數(shù)1、參數(shù)2、參數(shù).…)會調(diào)用apply方法。
Apply方法一般都聲明在伴生對象中。
8.4應(yīng)用程序?qū)ο?/h3>
每一個Scala應(yīng)用程序都需要從一個對象的main方法開始執(zhí)行,這個方法的類型為Array[String]=>Unit。
或者擴展一個App特質(zhì):
8.5枚舉
Scala中沒有枚舉類型,定義一個擴展Enumeration類的對象,并以value調(diào)用初始化枚舉中的所有可能值。
import org.scalatest.FunSuite
class Chapter07Test extends FunSuite {
test("core01") {
//Scala中沒有靜態(tài)方法和靜態(tài)字段,你可以用object
}
test("core02") {
//伴生對象
}
test("core03") {
//Apply方法
}
test("core04") {
//應(yīng)用程序?qū)ο? //繼承app特質(zhì)
}
test("core05") {
//Scala中沒有枚舉類型,定義一個擴展Enumeration類的對象,并以value調(diào)用初始化枚舉中的所有可能值。
}
}
//Java中會有類既有實例方法又有靜態(tài)方法的類。Scala中可以通過伴生對象進行實現(xiàn)。
//類和它的伴生對象可以相互訪問私有特性,他們必須存在同一個源文件中。必須同名
object Chapter07Test {
//單例對象
private var lastName = "jim"
val abc = "green"
// Apply方法一般都聲明在伴生對象中
def apply() = new Chapter07Test {}
}
//擴展一個App特質(zhì)
object Hello extends App {
println("HelloWorld")
}
//枚舉類
object TrafficLightColor extends Enumeration {
val Red, Yellow, Green = Value
}