internal class Animal {
private fun beat() {
println("心脏跳动。。。")
}
fun breach() {
beat()
println("吸一口气,吐一口气,呼吸中。。。")
}
}
internal class Wolf( //将要组合部分嵌入类中属性,实现组合(有点类似于代理模式)
private val animal: Animal
) {
fun run() {
//直接复用Animal提供的breath方法
animal.breach()
println("在陆地快速奔跑。。。")
}
}
@Test
fun main() {
val animal = Animal()
val wolf = Wolf(animal)
wolf.run()
}
//程序员
internal open class Programmer(private val name: String) {
fun work() {
println(name + "正在敲代码...")
}
}
//教师
internal interface Teacher {
fun work()
}
//既是程序员也是教师
internal class TeachProgrammer(name: String) : Programmer(name) {
fun teach() {
println("教师正在台上讲课...")
}
private inner class Closure : Teacher {
override fun work() {
teach()
}
}
val callBack: Teacher
get() = Closure()
}
@Test
fun test11() {
val tp = TeachProgrammer("白泽")
//直接调用从程序员继承的工作方法(work)
tp.work()
//表面上调用Teacher的work(),实际上回调的是teach()方法
tp.callBack.work()
}
kotlin闭包练习
最新推荐文章于 2024-05-23 22:28:52 发布