请看下面的代码。
trait MyTrait { val myVal : String }
class MyClass extends MyTrait { val myVal = "Value" }
class MyClass2(val myVal: String) extends MyTrait
为什么在MyClass
和的情况下初始化顺序不同MyClass2
?MyClass
will的构造函数为
MyClass() {
MyTrait$class.$init$(this);
myVal = value
}
MyClass2
will的构造函数是
MyClass2(String myVal) { this.myVal = myVal; MyTrait$class.$init$(this) }
我认为初始化顺序应该和MyClass2
构造函数一样,两种情况都一样。