标签: properties kotlin
interface A { var a: Int } class AJunior : A { override var a: Int init { a = 3 } }
它不会编译因为
属性必须初始化或是抽象的
但 已初始化。我知道我可以写:
override var a: Int = 3
但为什么赢得第一个例子编译?我的猜测是,这是一个简化编译器实现的错误或故意限制,但我不确定。
答案 0 :(得分:1)
I reported this as a bug,但事实证明这种行为是设计原因:
你可以在init块中拥有可以在未初始化状态下观察属性的代码