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.