в абстрактном суперклассе создает NPE

нение кода ниже:

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

Таким образом, выполняется код, связанный с присваиванием родительского значения, однако значение на самом деле не присваивается родительскому. После этого запускается дочерний код, который присваивает значение, как и ожидалось.

Может ли кто-нибудь объяснить цепочку событий здесь на более низком уровне?

Ответы на вопрос(1)

Ваш ответ на вопрос