为什么不在init块编译中初始化变量接口属性的代码?

interface A { var a: Int } class AJunior : A { override var a: Int init { a = 3 } } 

它不会编译,因为

财产必须被初始化或是抽象的

但它已经初始化了。 我知道我可以写:

 override var a: Int = 3 

但是为什么第一个例子不能编译? 我的猜测是,这是一个错误或故意限制,以简化编译器的实现,但我不知道。

我报告这是一个错误 ,但事实证明,这是行为是由设计,因为:

您可以在init块中拥有可以观察处于未初始化状态的属性的代码