Kotlin委託
委託
類委託
委託模式已經證明是實現繼承的一個很好的替代方式,
而 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() // 輸出 10
}
Derived
的超類型列表中的 by{: .keyword }-子句表示 b
將會在 Derived
中內部存儲。
並且編譯器將生成轉發給 b
的所有 Base
的方法。