当前位置:嗨网首页>书籍在线阅读

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,因而输出的结果和预期一样。