主要通过关键字 by
IWashBowl 是洗碗的接口,小头爸爸将洗碗的任务委托给大头儿子来洗
即 by BigheadSon()
//这种方式大头儿子会创建两次
class SmallHeadFather : IWashBowl by BigheadSon(){
override fun washing() {
println("我是小头爸爸,一次赚10元钱");
BigheadSon().washing()
println("看着儿子洗碗")
}
}
大头儿子类
class BigheadSon:IWashBowl{
override fun washing() {
println("我是大头儿子,下在洗碗,一次赚1元钱");
}
}
因为头儿子被委托洗碗,即使小头爸爸中没有洗碗方法,也是可以通过大头儿子来洗碗的
class SmallHeadFather : IWashBowl by BigheadSon(){
}
大头儿子类修改为 object
object BigheadSon:IWashBowl{
override fun washing() {
println("我是大头儿子,下在洗碗,一次赚1元钱");
}
}
则委托时可以去掉()
//这种方式大头儿子在内存中只有一个
class SmallHeadFather : IWashBowl by BigheadSon{
override fun washing() {
println("我是小头爸爸,一次赚10元钱");
BigheadSon.washing()
println("看着儿子洗碗")
}
}
网友评论