文章目录

  • 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 entrustfun main() {// I . 测试接口实现类//创建 接口实现类 对象var goodStudent : Student = Student()//执行实现的内容//  学习goodStudent.study()// II . 测试委托// 创建 使用委托实现接口 类的对象var badStudent : BadStudent = BadStudent()//执行委托的方法//  学习badStudent.study()//III . 测试委托的同时额外执行其它操作//创建 使用委托实现接口并执行额外操作 类的对象var bestStudent : BestStudent = BestStudent()//执行委托方法和额外操作/*复习之前的知识学习加强学习*/bestStudent.study()}

【Kotlin】Kotlin 委托 ( 使用 by 关键字进行接口委托 )相关推荐

  1. 一文就懂Kotlin作用域函数以及object关键字

    作用域函数 Kotlin 标准库包含几个函数,它们的唯一目的是在对象的上下文中执行代码块.当对一个对象调用这样的函数并提供一个 lambda 表达式时,它会形成一个临时作用域.在此作用域中,可以访问该 ...

  2. Xamarin使XRPC实现接口/委托远程调用

    在之前的文章中已经介绍如何使用Beetlex.XRCP组件进行接口/委托远程调用:由于组件BeetleX.XRPC.Clients支持.NETStandard2,因此Xamarin同样可以使用它来实现 ...

  3. Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字

    接口: 接口是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JD ...

  4. 通达信股票接口委托成功原理是什么?

    通达信股票接口的开发能够普遍性的在a股方面能有直接在接口系统保持稳定的运行机制进行委托下单,那么在执行期间,通达信股票接口将直接把api调用在开发方面,形成一个大支撑各个接口平台来源的数据.例如在开发 ...

  5. 【java初学】static关键字和接口

    文章目录 static关键字和接口 1. static关键字[重点] 1.1 static修饰静态成员变量 1.1.1 为什么要使用静态成员变量 1.1.2 静态成员变量从生活角度总结 1.1.3 s ...

  6. 股票购买接口委托下单c++代码

    炒股并非是运气可以驱使的,买股票不是赌博,是一种有风险的经济投资.在股市投资生涯中,掌握一门实战买卖技巧是我们必备的武器,这也是我们能长久在股市投资中得以生存的技法. 其实做股票投资是非常讲究买入和卖 ...

  7. Java从入门到放弃09---多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别

    Java从入门到放弃09-多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别 01 多态 多态指的是 ...

  8. 1688 API分享:1688商品采集接口 1688关键字搜索接口

    随着"无界零售"时代的到来,越来越多的企业开始寻求数字化转型,其中最重要的一个环节就是数据的互通和整合.而阿里巴巴旗下的B2B网站1688也推出了API接口,为企业间的数据交流提供 ...

  9. 理解委托(delegate)及为什么要使用委托

    委托:是一种定义方法签名的类型. 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法. 上述为官方说法,理解起来比较难,举个生活中的例子: 某人有三子,让他们各 ...

最新文章

  1. java csrf_java使用jsp servlet来防止csrf 攻击的实现方法
  2. 密码学专题 文本数据库
  3. 长沙湘江科技学校计算机信息,长沙湘江科技中等职业学校简介|长沙湘江科技中等职业学校介绍...
  4. 集成tomcat插件到eclipse
  5. UIScrollView可滚动内容大小歧义
  6. html上传视频文件前端显示,文件分片上传之前端文件分片
  7. java的constructor怎么用,constructor函数 Java中的构造函数Constructor怎么用
  8. ASP.net2.0页面运行时“无法显示XML页”的解决办法
  9. ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation(自动驾驶领域轻量级模型)
  10. 【历史上的今天】10 月 11 日:域名 baidu.com 问世;三星 Galaxy Note 7 爆炸门告一段落;图灵奖数据库先驱诞生
  11. 程序人生 - 汽车后视镜锁车自动折叠为啥失灵?
  12. C#操作dxf文件修改和绘制线、标签、块元素
  13. 计算机安全设置超链接设置,word做超链接操作方法
  14. 添加个人博客音乐外链
  15. NBUT 1451 Elise (暴力+并查集)
  16. 华为平板电池损耗用什么软件测试,平板怎么看电池损耗
  17. 世界名画陈列馆(最少机器人问题和不重复监视问题)
  18. 泊松分布,指数分布介绍以及其联系与区别
  19. 【Linux】Supervisor使用详解
  20. 任天堂游戏 html5,任天堂:会让粉丝们在Switch上玩到《毁灭战士:永恒》

热门文章

  1. 【基础算法-模拟-例题-*校长的问题】-C++
  2. 字节流的 创建 写入文字 复制文件
  3. linux下su和su - 的区别
  4. 【SICP练习】107 练习3.8
  5. jquery 3D分页翻转滑块
  6. Jmeter-接口测试相关
  7. 英文词频统计预备,组合数据类型练习
  8. 【Linux高频命令专题(24)】grep
  9. 【Linux开发】linux设备驱动归纳总结(四):5.多处理器下的竞态和并发
  10. 在eclipse中使用Lombok