美文网首页kotlin
Kotlin面向对象之委托(Delegation)

Kotlin面向对象之委托(Delegation)

作者: 已迁至知乎_此不再维护 | 来源:发表于2017-05-27 09:17 被阅读0次

    类委托(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。

    相关文章

      网友评论

        本文标题:Kotlin面向对象之委托(Delegation)

        本文链接:https://www.haomeiwen.com/subject/suwffxtx.html