type: doc layout: reference category: "Syntax"

title: "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() {

  val b = BaseImpl(10)

  Derived(b).print() // prints 10

}

在父类Derived中的 by{: .keyword }-语句表示 b 将会被 储存在 Derived 的内部对象中

并且编译器会把所有 Base 的方法生成给最终的 b.


翻译By EasonZhou