Kotlin面向对象之委托(Delegation)

类委托(Class Delegation)

委托模式(也叫作代理模式),该模式已经被证明是继承的一个很好的替代方案,而且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类对象的内部,且编译器将生成所有Base类的成员,并指向b。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容