【Kotlin】Kotlin 委托 ( 使用 by 关键字进行接口委托 )
【摘要】
文章目录
I . 定义 和 实现普通接口II . 使用委托实现接口III . 使用委托实现接口的基础上执行额外操作IV . 测试上述三种接口实现 ( 普通实现 | 委托 | 委托 + 额外操作 )...
I . 定义 和 实现普通接口
1 . 定义普通的接口 : 使用 interface 声明接口 , 接口中的方法没有方法体 , 也不用 abstract 关键字修饰 ;
package entrust
/**
* 定义一个学习接口 , 代表有学习的能力
*/
interface IStudy {
/**
* 抽象方法 , 学习
*/
fun study()
}
2 . 实现接口 : 使用 “:” 声明该类实现的接口 , 是接口的子类 , 注意类中必须实现接口的方法 , 实现方法需要使用 override 修饰 ;
package entrust
/**
* 定义学生类 , 实现学习接口 , 其有学习的能力
*/
class Student : IStudy {
/**
* 实现的学习抽象方法
*/
override fun study() {
println("学习")
}
}
II . 使用委托实现接口
使用委托实现接口 : 使用 : IStudy
声明该类实现了 IStudy 接口 , 但是这个类不实现 study() 抽象方法 , 而是委托给了 Student 类 , 当调用 BadStudent 的 study() 方法时 , 会自动调用 Student 类的 Study ( ) 方法 ;
package entrust
/**
* 坏学生不学习 , 虽然实现了学习接口 , 但是其委托 普通学生来学习 , 自己什么都不做
*/
class BadStudent : IStudy by Student() {
}
III . 使用委托实现接口的基础上执行额外操作
使用委托实现接口的基础上执行额外操作 : 当类实现接口 , 并将接口的操作委托给了另外的类 , 此时仍可以实现接口中的方法 , 在重写的方法中 , 可以调用委托方法 , 并且还可以额外做其它操作 ;
package entrust
/**
* 最好的学生
* 委托 学生学习 , 自己额外学习更多东西
*/
class BestStudent : IStudy by Student() {
/**
* 委托其它类后 , 也可以自己实现该类 , 在委托方法的前后可以执行其它额外操作
*/
override fun study() {
println("复习之前的知识")
Student().study()
println("加强学习")
}
}
IV . 测试上述三种接口实现 ( 普通实现 | 委托 | 委托 + 额外操作 )
测试上述三种情况 :
① 测试接口实现类 ;
② 测试委托 ;
③ 测试委托的同时额外执行其它操作 ;
package entrust
fun main() {
// I . 测试接口实现类
//创建 接口实现类 对象
var goodStudent : Student = Student()
//执行实现的内容
// 学习
goodStudent.study()
// II . 测试委托
// 创建 使用委托实现接口 类的对象
var badStudent : BadStudent = BadStudent()
//执行委托的方法
// 学习
badStudent.study()
//III . 测试委托的同时额外执行其它操作
//创建 使用委托实现接口并执行额外操作 类的对象
var bestStudent : BestStudent = BestStudent()
//执行委托方法和额外操作
/*
复习之前的知识
学习
加强学习
*/
bestStudent.study()
}
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/105001048
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)