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

时间:2015-12-01 23:38:28

标签: properties kotlin

interface A {
    var a: Int
}

class AJunior : A {
    override var a: Int

    init {
        a = 3
    }
}

它不会编译因为

  

属性必须初始化或是抽象的

已初始化。我知道我可以写:

override var a: Int = 3

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

1 个答案:

答案 0 :(得分:1)

I reported this as a bug,但事实证明这种行为是设计原因:

  

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