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) {
    val b = BaseImpl(10)
    Derived(b).print() // prints 10
}

Derived的父类列表中的by语句表明,b将会被存储在Derived类对象的内部,且编译器将生成所有Base类的成员,并指向b。

你可能感兴趣的:(Kotlin面向对象之委托(Delegation))