Scala單例和伴生對象

單例(Singleton)對象是一個通過使用object關鍵字而不是使用class關鍵字聲明的對象。其他對象不需要調用在單例對象中聲明的方法。

在scala中,沒有靜態的概念。 所以scala創建一個單例對象來為程式的執行提供入口點。
如果不創建單例對象,代碼也會成功編譯,但不會產生任何輸出。單例對象中聲明的方法可以全局訪問。單例對象可以擴展類和性狀。

Scala單例對象示例

object Singleton{
    def main(args:Array[String]){
        SingletonObject.hello()         // No need to create object.
    }
}


object SingletonObject{
    def hello(){
        println("Hello, This is Singleton Object")
    }
}

將上面代碼保存到原始檔案:Demo.scala中,使用以下命令編譯並執行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
Hello, This is Singleton Object

Scala伴生對象

在scala中,當有一個與單例(singleton)對象同名的類時,它被稱為伴生(companion)類,單例(singleton)對象調用伴生對象。

伴生類及其伴隨對象必須在同一個原始檔案中定義。

Scala伴生對象示例

class ComapanionClass{
    def hello(){
        println("Hello, this is Companion Class.")
    }
}
object Demo{
    def main(args:Array[String]){
        new ComapanionClass().hello()
        println("And this is Companion Object.")
    }
}

將上面代碼保存到原始檔案:Demo.scala中,使用以下命令編譯並執行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
Hello, this is Companion Class.
And this is Companion Object.

上一篇: Scala檔I/O 下一篇: Scala Case類和對象