Scala: se ejecuta el código padre del valor anulado pero el valor no se asigna en el padre

Ejecutando el siguiente código:

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

Produce esta salida:

Setting value in parent
Parent value is null
Setting value in child
Child value is ChildVal

Así se ejecuta el código asociado con la asignación del valor primario, sin embargo, el valor no se asigna realmente en el primario. Luego se ejecuta el código secundario y asigna el valor como se esperaba.

Podría alguien explicar la cadena de eventos aquí en un nivel inferior?

Respuestas a la pregunta(1)

Su respuesta a la pregunta