在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....
这是通过特质相同的情况?我相信对象更有可能生活在堆栈中。
请问有人可以从内存分配的角度阐明这三种语法之间的区别?