委托
委托类
委托模式是实现继承的一个有效方式.
Kotlin原生支持它。
一个类 Derived
可以从一个接口 Base
继承并且委托所有的共有方法为具体对象。
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
}
在父类Derived
中的 by-语句表示 b
将会被 储存在 Derived
的内部对象中
并且编译器会生成所有的用于转发给b
的base
的方法