Edit Page

委托

委托类

委托模式是实现继承的一个有效方式. 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 的内部对象中 并且编译器会生成所有的用于转发给bbase的方法