06-类委托
9.2.1 类委托
委托模式已被证明是类继承模式的一种很好的替代方案,Kotlin官方直接支持委托模式,Kotlin通过关键字by来实现委托。所谓类委托,就是在一个类中定义的方法,实际是调用另一个类对象的方法来实现的。代码如下。
fun main(args: Array<String>) {
val b = BaseImpl(10)
Derived(b).print() // 输出 10
}
// 创建接口
interface Base {
fun print()
}
// 实现此接口的被委托的类
class BaseImpl(val x: Int) : Base {
override fun print() { print(x) }
}
// 使用关键字by建立委托类
class Derived(b: Base) : Base by b
在上面的实例中,派生类Derived继承了接口Base的所有方法,并将其方法委托给一个指定的对象。可以看到,Derived类并没有实现接口Base的print()方法,而是通过关键字by将其实现委托给了对象b,因而输出的结果和预期一样。