我對這兩段代碼之間有什麼區別有疑問。Scala在類中定義方法而不是在伴隨對象中有什麼區別
顯而易見的是,如果方法是寫在類中,您必須實例化類,而如果它在伴隨對象中,則不需要這樣做。
但是,還有其他的區別嗎?哪些是好處和缺點?
在類
class Hello {
def hello = println("Hello world")
}
object Hello {
def main(args: Array[String]) {
val instance = new Hello()
instance.hello
}
}
定義一個方法在同伴對象
class Hello {
}
object Hello {
def hello = println("Hello world")
def main(args: Array[String]) {
this.hello
}
}
一個區別:對象,和它們的方法,不能被繼承或覆蓋。 – jwvh
當一個類被實例化時,方法沒有被分配,所以這裏沒有重複。您仍然需要爲實例本身分配內存。 –
@VictorMoroz謝謝你,是我不好,我會編輯的問題,從Odersky的書'運行時留出一些內存來保存對象的state'的形象,意味着分配僅供@jwvh我學會領域 – agusgambina