重写由类委托实现的接口方法时,是否可以从重写函数中调用通常委托给的类?类似于super
使用继承时的调用方式。
从文档中:
interface Base {
fun print()
}
class BaseImpl(val x: Int) : Base {
override fun print() { print(x) }
}
class Derived(b: Base) : Base by b
fun main(args: Array<String>) {
val b = BaseImpl(10)
Derived(b).print() // prints 10
}
请注意,覆盖按您预期的那样工作:编译器将使用您的覆盖实现而不是委托对象中的实现。
override fun print() { ... }
如何BaseImpl
print()
从这个被覆盖的函数中调用函数?
用例是我想向这个函数添加额外的逻辑,同时重用现有的实现。