博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kotlin 继承
阅读量:5746 次
发布时间:2019-06-18

本文共 2247 字,大约阅读时间需要 7 分钟。

一、

1.继承
父类需要open才可以被继承
父类方法、属性需要open才可以被覆写
接口、接口方法、抽象类默认都是open
覆写父类(接口)成员需要override关键字
举例:
子类D需要继承A父类,实现B、C接口
class D: A(),B,C
注意继承类时实际上调用了父类的构造方法
类只能单继承,接口可以多实现

2.接口代理:凡事不必事必躬亲,关键字by

class Manager(driver: Driver): Driver by driver
接口方法的实现交给代理类去实现

3.首先来看一个医生和程序源的例子

看一个故事
再看一段代码

package net.println.kotlin.chapter4/** * @author:wangdong * @description:医生和程序员的故事 *//** * 一个类想要被继承,必须先open * 一个方法想要被覆写,也必须先open * open class Person{ *   open fun work()} *//**定义一个人的抽象类*/abstract class Person(open val age: Int){    abstract fun work()}/**定义一个工程师的类,继承人的抽象类*/class engineer(age: Int): Person(age){    override val age: Int    get() = 0    //覆写方法一定要加override关键字    override fun work() {        println("我在写代码")    }}/**定义一个医生的类,继承人的抽象类*/class doctor(age: Int): Person(age){    override fun work() {        println("我在给病人做手术")    }}fun main(args: Array
) { val engineer = engineer(23) engineer.work() println("工程师" + engineer.age) val doctor = doctor(45) doctor.work() println("医生" + doctor.age)}

二、再看一资深经理的例子啦

package net.println.kotlin.chapter4/** * @author:wangdong * @description:定义一个会开车的经理 *//**定义个一个经理*/class Manager:Driver,Writer{    override fun drive() {        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.    }    override fun write() {        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.    }}/**定义一个资深的经理,实现两个接口*//**接口代理Driver by driver,不用在覆写方法,类似write的覆写也可*/class SeniorManager(var driver: Driver,var writer: Writer): Driver by driver,Writer{    override fun write() {        writer.write()    }}/**司机:资深经理需要找一个会开车的*/class CarDriver: Driver{    override fun drive() {        println("给资深经理开车")    }}/**秘书:资深经理需要找一个会作ppt的*/class PPTWriver: Writer{    override fun write() {        println("给资深经理做ppt")    }}/**定义一个开车的接口*/interface Driver{    fun drive()}/**会写总结报告*/interface Writer{    fun write()}fun main(args: Array
) { //Hr给资深经理招司机、秘书 val driver = CarDriver() val secretary = PPTWriver() //给资深经理配一个司机、一个,秘书 val seniorManager = SeniorManager(driver,secretary) //实际上是,资深经理让司机开车、让秘书做ppt seniorManager.drive() seniorManager.write()}/**运行结果是*//** * 给资深经理开车 * 给资深经理做ppt */
你可能感兴趣的文章
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
面试中会遇到的正则题
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
React.js 集成 Kotlin Spring Boot 开发 Web 应用实例详解
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>