kotlin

48.类委托

2019-10-04  本文已影响0人  写代码的向日葵

1.第一种方式代码如下

fun main(args: Array<String>) {
    val smallHeadFeather = SmallHeadFeather()
    smallHeadFeather.wash()
}

//洗完能力
interface Washpower {
    //洗碗
    fun wash()
}

//大头儿子
class BigHeadSon : Washpower {
    override fun wash() {
        println("大头儿子开始洗碗了")
    }
}

//小头爸爸,将洗碗能力委托给大头儿子
class SmallHeadFeather : Washpower by  BigHeadSon()

2.类委托第二种实现方式

fun main(args: Array<String>) {

    val bigHeadSon =BigHeadSon()

    val smallHeadFeather = SmallHeadFeather(bigHeadSon)
    smallHeadFeather.wash()
}

//洗完能力
interface Washpower {
    //洗碗
    fun wash()
}

//大头儿子
class BigHeadSon : Washpower {
    override fun wash() {
        println("大头儿子开始洗碗了")
    }
}

//小头爸爸,将洗碗能力委托给大头儿子
class SmallHeadFeather(val washpower: Washpower) : Washpower by washpower

3.类委托加强,在调用方法前后加上一些操作,例如下面代码


fun main(args: Array<String>) {

    val bigHeadSon = BigHeadSon()

    val smallHeadFeather = SmallHeadFeather(bigHeadSon)
    smallHeadFeather.wash()
}

//洗完能力
interface Washpower {
    //洗碗
    fun wash()
}

//大头儿子
class BigHeadSon : Washpower {
    override fun wash() {
        println("大头儿子开始洗碗了")
    }
}

//小头爸爸,将洗碗能力委托给大头儿子
class SmallHeadFeather(val washpower: Washpower) : Washpower by washpower {
    override fun wash() {
        println("付给小头儿子一块钱")
        //小头儿子洗碗功能
        washpower.wash()
        println("干得很好,下次继续")
    }
}
上一篇 下一篇

猜你喜欢

热点阅读