Kotin 的代理和委託

代理和委託——大頭兒子和小頭爸爸的洗碗案例

委託,把自己不幹的事情交給別人做
代理,做別人委託的事情
kotlin中接口代理關鍵字:by

1、場景說明(舉例)
圍裙媽媽只負責做飯,不負責洗碗
小頭爸爸洗一次碗可以賺到10元
大頭兒子洗一次碗可以賺到1元
小頭爸爸承攬了洗碗的活,最終交給大頭兒子做,中間賺了9元差價

2、代碼實現——完全委託
(1)、定義洗碗的接口

// An highlighted block
interface IWashBow {    //定義一個洗碗接口,包含一個洗碗方法
    fun washBow()
}

(2)、大頭兒子實現接口
class BigHeadSon:IWashBow {    //被實現的接口後面不需要加()
    override fun washBow() {
        println("我是大頭兒子,每次洗碗賺1元錢")
    }
}

(3)、小頭爸爸實現接口並委託事件給小頭兒子
class SmallHeadFather:IWashBow by BigHeadSon(){     //委託關鍵字 by;被委託方(即代理方)如果不是單例類,則後面需要跟()

}

(4)、程序調用及輸出結果
fun main(args: Array<String>) {
    var father=SmallHeadFather()
    father.washBow()    //小頭爸爸已經將洗碗的操作委託爲小頭兒子了,所以,此處本質是調用的小頭兒子的洗碗操作
}

以上是Kotlin的代理和委託
還有一些空值
空值處理

以 null 表示空值
kotlin 中定義方法時,默認接收的是 非 null 參數。
如果定義某個方法可以接收 null參數,則在聲明方法參數時在參數後面加上?。示例如下:

// An highlighted block
fun test(str1:String?){    //String 後面的 ? 就表示該方法可以接收 null 作爲參數
    //DO STH 
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章