【发布时间】:2013-12-06 16:20:13
【问题描述】:
在 Scala 中,有很多方法可以创建对象:
例如,通过new关键字创建类
class Car {
def startEngine() = println("run....")
}
val car = new Car
car.startEngine() // run....
汽车对象应该像 Java 中的“新”对象一样位于堆中,并在被取消引用时等待被垃圾回收。
那么,如何通过 trait 来创建呢?
trait Car {
def startEngine() = println("run...")
}
val car = new Car {}
car.startEngine() //run....
这是使用类 myCar 扩展 Car 创建对象的有效语法。 相反,它只是从 Trait 创建对象。
它是否对象堆中的席位? (我猜不是) 那么,它是否存在于堆栈中,并且一旦出局就会被取消引用为局部变量?
最后,通过 Object 怎么样?
object Car {
def startEngine() = println("run...")
}
Car.startEngine() //run....
这与通过 Trait 的情况相同吗?我相信对象更有可能存在于堆栈中。
有人可以解释一下这 3 种语法在内存分配方面的区别吗?
【问题讨论】:
标签: scala