Kotlin:问题实现与getter的接口

时间:2018-06-14 21:12:52

标签: kotlin

我正在尝试使用getter方法实现一个接口,该方法与实现类的构造函数参数名称相匹配。

interface Car{
    fun getModel(): Int
}

class Honda(val model: Int): Car {
    override fun getModel(): Int {

    }
}

如果Honda未实现getModel(),则会收到Accidental Override错误。如果Honda实施getModel(),则会收到Platform declaration clash错误。

我可以在Honda构造函数中更改参数的名称,这样可以解决问题,但感觉就像是一个冗余的getter方法。

interface Car{
    fun getModel(): Int
}

class Honda(val modelParam: Int): Car {
    override fun getModel() = modelParam
}

有没有更好的方法来实现这样的接口?

2 个答案:

答案 0 :(得分:3)

您可以声明properties in interface

interface Car{
    val model : Int
}

然后在实现/构造函数中,您需要添加override关键字。

class Honda(override val model : Int): Car

答案 1 :(得分:1)

如果接受的答案不适用,因为您无法更改界面,或者界面是Java界面,

class Honda(private val model: Int): Car {
    override fun getModel(): Int = model
}

对于Java接口,它仍然可以在Kotlin中以.model进行访问。