Kotlin - 关于类的委托的理解

2019-08-08  本文已影响0人  大丸蛇
    interface Base {
        fun print()
    }

    // 实现此接口的被委托的类
    class BaseImpl(val x: String) : Base {
        override fun print() {
            Log.d("haha", x)
        }
    }

    // 通过关键字 by 建立委托类
    class Derived(b: Base) : Base by b

    fun main() {
        val b = BaseImpl("10")
        Derived(b).print() // 输出 10
    }

    interface Base {
        fun print()
    }

    // 实现此接口的被委托的类
    class BaseImpl(val x: String) : Base {
        override fun print() {
            Log.d("haha", x)
        }
    }

    // 通过关键字 by 建立委托类
    class Derived(b: Base) : Base by b {
       fun doMyOwnPrint(){
            Log.d("hehe","33")
            print()
       }
    }

    fun main() {
        val b = BaseImpl("10")
        Derived(b).doMyOwnPrint() 
      // 输出 hehe33
      // 输出 haha10
    }

 private fun BaseImpl.printMyText() {
        Log.d("33", "")
        print()
    }
           //调用
           val a = BaseImpl()
           a.printMyText();
上一篇下一篇

猜你喜欢

热点阅读