委托和代理的关系就是:A委托B做事,B就是A的代理人,B代理A做事
委托的前提是委托人和代理人必须实现同样的接口。
委托的关键字是by。如:
interface IWash {
fun wash()
}
class Son :IWash{
override fun wash() {
print("儿子洗碗")
}
}
class Parent :IWash by Son()
这种情况下父可以亲不用实现洗碗的方法,而是委托给儿子去洗碗。
父亲也可以实现洗碗方法,此时就会走爸爸的洗碗方法,而不会走儿子的洗碗方法,只有在爸爸的洗碗方法中在调用儿子的洗碗方法,儿子才会洗碗
class Parent :IWash by Son(){
override fun wash() {
Son().wash()
}
}