Kotlin学习笔记(2)Kotlin委托代码示例
【Kotlin学习笔记(2)Kotlin委托代码示例】1,class委托
interface Animal{
fun call()
}class Cat : Animal{
override fun call() {
println("喵喵喵")
}
}class Dog : Animal{
override fun call() {
println("汪汪汪")
}
}
//委托实现策略模式
//MagicAnimal行为由传入的Animal实例实现
class MagicAnimal(val animal: Animal) : Animal by animalfun main(args: Array){
println("output:")
MagicAnimal(Dog()).call()
MagicAnimal(Cat()).call()
}output:
汪汪汪
喵喵喵
2,属性委托
//委托实现策略模式
//MagicAnimal行为由传入的Animal实例实现
class MagicAnimal(val animal: Animal) : Animal by animal {
//name属性访问由代理PropertyDelegation处理
var name: String by PropertyDelegation()
}class PropertyDelegation{
private lateinit var name : Stringoperator fun getValue(thisRef: Any?, property: KProperty<*>): String{
println("name=$name")
return name
}operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String){
println("value=https://www.it610.com/article/$value")
name = value
}
}fun main(args: Array){
println("output:")
var mCat = MagicAnimal(Cat())
mCat.name = "花花"
}output:
value=https://www.it610.com/article/花花
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习