Выполнение приведенного ниже кода:
class Parent {
val value = {
println("Setting value in parent")
"ParentVal"
}
println(s"Parent value is ${value}")
}
class Child extends Parent {
override val value = {
println("Setting value in child")
"ChildVal"
}
println(s"Child value is ${value}")
}
new Child
Создает этот вывод:
Setting value in parent
Parent value is null
Setting value in child
Child value is ChildVal
Таким образом, выполняется код, связанный с назначением родительского значения, однако значение на самом деле не назначается вродитель.После этого запускается дочерний код, который присваивает значение, как и ожидалось.
Может ли кто-нибудь объяснить цепочку событий здесь на более низком уровне?