在Scala中,有許多方法來創建對象:差異斯卡拉類,特質和對象的內存分配
例如,通過類新關鍵字生成
class Car {
def startEngine() = println("run....")
}
val car = new Car
car.startEngine() // run....
其中汽車對象應該採取行動就像Java中的「newed」對象在堆中一樣,等待被垃圾收集,因爲它被取消引用。
那麼,如何創建雖然特質?
trait Car {
def startEngine() = println("run...")
}
val car = new Car {}
car.startEngine() //run....
這是使用class myCar擴展Car創建對象的有效語法。 相反,它只是從Trait創建對象。
它是否對象堆中的座位? (我想不是) 那麼,它是否生活在堆棧中,並且會被取消引用爲局部變量,一旦出現問題?
最後,如何通過對象?
object Car {
def startEngine() = println("run...")
}
Car.startEngine() //run....
這是通過特質相同的情況?我相信對象更有可能生活在堆棧中。
請問有人可以從內存分配的角度闡明這三種語法之間的區別?