我使用了here中所述的接口委托。有没有办法使用它,但是可以重写并显式调用父类(委托)?
遵循这些原则(无法编译):
class Rect(val width: Int, val height: Int, position: Position) : Positionable by DefaultPositionable(position) {
override fun getPosition() {
val parent = super.getPosition()
return parent.copy(x = parent.x + 1)
}
}
答案 0 :(得分:1)
在这种情况下,您将无法访问delegate
。解决方法是,您可以使用下一种方法
class Rect(
val width: Int,
val height: Int,
val pos: Position,
private val positinable: Positionable = DefaultPositionable(pos)
) : Positionable by positinable {
override fun getPosition(): Position {
val parent = positinable.getPosition()
return parent.copy(x = parent.x + 1)
}
}