继承:

比较简单,直接看如何使用,这里以父亲与儿子的关系为例:

接着定义儿子并且继承父亲,如下:

是用":"号来继承的,但是此时报错了,看下错误提示:

在kotlin的类并非是人人都可以继承的,从提示来看说Father是一个final类型的,好奇怪,也没对Father类声明为final呀,要想解决这个问题,这时需要在Father类中增加一个关键字"open",顾名思议就是将其类开方嘛,如下:

这时发现Son就正常可以编译了:

这也就是Kotlin继承的语法,记住就成,接下来使用一下:

由于儿子是受过高等教育的人,所以其行为跟父亲是有区别的,所以这里就涉及到子类覆盖父类的方法重新定义行为啦,那在kotlin具体如何重写父类的方法呢?这里需要使用override关键字啦,这其实跟java类似,如下:

可是还是报错了,看提示:

可见在kotlin当中,默认都是final行为,要想被子类覆盖,还得用open关键字将其开放,如下:

当然这时Son也就编译正常啦:

这时再重新执行:

抽象类:

当然也是直接看语法啦,面向对象的语言都类似,这里以人为例:

这时咱们要将eat()方法声明为抽象方法,其实现有具体子类来决定,如何搞呢?

将其方法体删掉,这时报错了,看错误提示:

也就是说需要在方法上显示的声明为抽象的,所以加上:

这个跟java类似,不多解释,抽象类定义好之后,接下来定义具体子类来继承这个抽象类,这里用男人和女人为例:

接下来使用一下:

多态:

多态其实就是同种功能的不同表现形态,这里不多解释了,直接看代码,这里举个什么例子呢?对于男人和女人来说都有一个相同的功能:撒尿,但是!公认的男人与女人撒尿的形态是不一样的嘛,所以下面在人类类中定义一个撒屎的行为:

接着子类得实现这个抽象方法啦,如下:

接下来使用一下它,为了体现多态的好处,这里多定义几个人类,如下:

接下来将这个人类放到一个集合当中,怎么搞呢?这个之前已经使用过,下面看代码:

下面则可以遍历调用一个通用的行为既可将不同人的具体行为给展示出来,如下:

编译运行:

最新文章

  1. hdu3549还是网络流
  2. 解决Oracle+weblogic系统死机的问题
  3. unity3d c#脚本定义Transform
  4. php中文乱码
  5. kali linux
  6. 读书笔记—CLR via C#章节1-2
  7. CSS3 background-size:cover/contain
  8. 前端构建工具之gulp的安装和配置
  9. 初遇 Asp.net MVC 数据库依赖缓存那些事儿
  10. Windows上使用Git托管代码到Coding
  11. 2019Java查漏补缺(二)
  12. loadrunner下的putty和plink
  13. 使用ByteArrayOutputStream解决IO乱码问题的踩坑记录
  14. Java编程思想 学习笔记3
  15. 图->存储结构->邻接表
  16. iOS开发-UIScreenEdgePanGestureRecognizer实战
  17. Eclipse “cannot be resolved to a type”
  18. Rafy中的IOC
  19. 第二节:用PE安装Windows系统
  20. mysql安装(rpm)

热门文章

  1. 物料主数据批导bapi
  2. OO ALV 后台运行时错误:Control Framework: Fatal error - GUI cannot be reached
  3. 利用java执行shell脚本
  4. Kibana 创建索引 POST 403 (forbidden) on create index
  5. Android逆向——破解水果大战
  6. 把CSV文件中的labels标签提取为json文件
  7. 【linux杂谈】centos6和centos7中固定IP的方法
  8. robot-framework 利用evaluate关键字生成随机数
  9. C语言&*符号使用及大端法小端法测试
  10. MySQL 中 savepoint 的使用