internal classAnimal{private fun beat(){println("心脏跳动。。。")}
fun breach(){beat()println("吸一口气,吐一口气,呼吸中。。。")}}
internal classWolf(//将要组合部分嵌入类中属性,实现组合(有点类似于代理模式)private val animal:Animal){
fun run(){//直接复用Animal提供的breath方法
animal.breach()println("在陆地快速奔跑。。。")}}@Test
fun main(){
val animal =Animal()
val wolf =Wolf(animal)
wolf.run()}//程序员
internal openclassProgrammer(private val name:String){
fun work(){println(name +"正在敲代码...")}}//教师
internal interfaceTeacher{
fun work()}//既是程序员也是教师
internal classTeachProgrammer(name:String):Programmer(name){
fun teach(){println("教师正在台上讲课...")}private inner classClosure:Teacher{
override fun work(){teach()}}
val callBack:Teacherget()=Closure()}@Test
fun test11(){
val tp =TeachProgrammer("白泽")//直接调用从程序员继承的工作方法(work)
tp.work()//表面上调用Teacher的work(),实际上回调的是teach()方法
tp.callBack.work()}