Насколько я могу судить, мотивация (как указано в ссылке выше):
"Естественно, когда val переопределяется, он не инициализируется более одного раза. Поэтому, хотя x2 в приведенном выше примере, по-видимому, определяется в каждой точке, это не тот случай: переопределенный val при создании будет выглядеть нулевым суперклассов, как и абстрактное значение. "
Я не понимаю, почему это вообще естественно. Вполне возможно, что р.ч.с. присваивания может иметь побочный эффект. Обратите внимание, что такая структура кода совершенно невозможна ни в C ++, ни в Java (и я предполагаю Smalltalk, хотя я не могу говорить за этот язык). Фактически вы должны делать такие двойные присваивания неявными ... ticilpmi ... EXplicit в этих языках через конструкторы. В свете р.ч.с. неопределенность побочных эффектов, это действительно не кажется большой мотивацией: способность обходить побочные эффекты суперкласса (таким образом аннулируя инварианты суперкласса) через НАЗНАЧЕНИЕ? Ик!
Существуют ли другие "убийственные" мотивы для разрешения такой небезопасной структуры кода? Объектно-ориентированные языки обходились без такого механизма около 40 лет (30 с лишним лет, если считать с момента создания языка), зачем включать его сейчас?
Это ... просто ... кажется ... опасно.