代理和委托——大头儿子和小头爸爸的洗碗案例
委托,把自己不干的事情交给别人做
代理,做别人委托的事情
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
}