将变量传递给Kotlin的父类

时间:2018-11-14 16:23:44

标签: kotlin

我认为这已经被问过了,但是我不确定为什么它不起作用

我有几个界面

interface SBoard {
    val size: Int
}

interface GBoard<T> : SquareBoard {
}

带有类

open class SBoardImpl (override val size: Int) : SBoard {
    lateinit var allCells: Array<Array<CellImpl>>

    init {
        println ("Parent Generator: " + this.size.toString())
    }

   ...
}

class GBoardImpl<T> (override val size: Int): SBoardImpl (size), GBoard<T>{
    lateinit var cellValues: Array<Array<Any?>>

    init {
        println ("Child Initialisation:" + super.size.toString())
    }

    ...
}

当我这样创建GBoardImpl

GameBoardImpl<T>(2)

例如

val g = createGBoard<Char>(2)

大小不会传递给超级(SBoard)吗?我得到

的输出
  

父生成器:0

我已经扯了很多,所以我希望它仍然有意义,但是本质上SBoard init确实会被调用(即,父对象),并且size的值是0而不是2(在此示例中)。我看过的所有示例(或至少我看过它们的方式)都表明,在方法签名中包含参数应该使它向上传递

class GBoardImpl<T> (override val size: Int): SBoardImpl (size)... 

表示将大小传递给SBoardImpl / Parent初始化程序。这是一个误会吗?有人可以告诉我我做错了什么吗?

0 个答案:

没有答案