Q:

Kotlin: Issue implementing interface with getters

I am trying to implement an interface with getter method which matches the constructor parameter name of the implementing class. 
interface Car{
    fun getModel(): Int
}

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

    }
}

If Honda doesn't implement getModel(), we get an Accidental Override error. If Honda implements getModel(), we get a Platform declaration clash error.
I can change the name of the parameter in the Honda constructor, which fixes the problem, but it feels like a redundant getter method.
interface Car{
    fun getModel(): Int
}

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

Is there a better way to implement such interfaces?

A:

You can declare properties in interface:
interface Car{
    val model : Int
}

Then in implementation / constructor you need to add override keyword.
class Honda(override val model : Int): Car

A:

For case where the accepted answer isn't applicable because you can't change the interface, or the interface is a Java one,
class Honda(private val model: Int): Car {
    override fun getModel(): Int = model
}

For a Java interface, it can still be accessed as .model in Kotlin.

