面向对象:

  1. //妹子 性格 声音
  2. class Girl(var chactor:String,var voice:String)
  3.  
  4. fun main(args: Array<String>) {
  5. var girl=Girl("彪悍","甜美")
  6. println("声音"+girl.voice)
  7. }

行为

  1. //妹子 性格 声音
  2. class Girl(var chactor:String,var voice:String){
  3. //行为
  4. fun smile(){
  5. println("妹子笑了下,么么哒")
  6. }
  7. }
  8.  
  9. fun main(args: Array<String>) {
  10. var girl=Girl("彪悍","甜美")
  11. println("声音"+girl.voice)
  12. girl.smile()
  13. }

java的三大特性封装继承多态

属性私有private是和jav一样的,继承不一样,案例:

  1. 父类:
  2.  
  3. /**
  4. * open允许被继承
  5. */
  6. open class Fathor{
  7. open var chactor:String="性格内向"
  8. /**
  9. * 方法允许重写
  10. */
  11. open fun action(){
  12. println("公共场合喜欢大声喧哗")
  13. }
  14.  
  15. }
  16.  
  17. 子类:
  18.  
  19. /**
  20. * 继承:FATHOR
  21. */
  22. class Son:Fathor(){
  23. /**
  24. * 重写方法
  25. */
  26. override fun action(){
  27. println("很乖巧")
  28. }
  29. }
  30.  
  31. 调用类:
  32.  
  33. fun main(args: Array<String>) {
  34. var son1=Son();
  35. println("儿子的性格:${son1.chactor}")
  36. son1.action()
  37. }

抽象类:

接口实现:

  1. interface IMan{
  2. fun xiaodidi()
  3. }
  4.  
  5. class Man:IMan
  6. {
  7. override fun xiaodidi() {
  8. println("18cm")
  9. }
  10. }
  1. java instanceof Kotlin简化为is

    代理和委托:
    爸爸委托儿子洗碗的案例:
  1. package DL
  2. //洗碗的接口
  3. interface IWashBowl{
  4. fun washing()
  5. }
  6.  
  7. package DL
  8.  
  9. /**
  10. * 大头儿子
  11. */
  12. class BigHeadSon:IWashBowl{
  13. override fun washing() {
  14. println("我是大头儿子一次洗碗一块钱") }
  15.  
  16. }
  17.  
  18. package DL
  19.  
  20. /**
  21. * 小头爸爸委托儿子洗碗 委托模式:by +委托对象
  22. */
  23. class SmallHeadFather:IWashBowl by BigHeadSon(){
  24.  
  25. /**
  26. * 重写方法,更改后继续调用委托对象的方法,如果不重写默认调用委托对象方法
  27. */
  28. override fun washing() {
  29. println("小头爸爸洗碗一次10元")
  30. BigHeadSon().washing()
  31. }
  32. }
  33.  
  34. package DL
  35.  
  36. class Demo {
  37. }
  38.  
  39. fun main(args: Array<String>) {
  40.  
  41. var father=SmallHeadFather()
  42. father.washing()
  43.  
  44. }

现在大头儿子每次创建对象都会产生一次大头儿子,做个单例模式吧。

  1. package DL
  2.  
  3. /**
  4. * 大头儿子
  5. */
  6. object BigHeadSon:IWashBowl{
  7. override fun washing() {
  8. println("我是大头儿子一次洗碗一块钱") }
  9.  
  10. }
  1. package DL
  2.  
  3. /**
  4. * 小头爸爸委托儿子洗碗 委托模式:by +委托对象
  5. */
  6. class SmallHeadFather:IWashBowl by BigHeadSon{
  7.  
  8. /**
  9. * 重写方法,更改后继续调用委托对象的方法,如果不重写默认调用委托对象方法
  10. */
  11. override fun washing() {
  12. println("小头爸爸洗碗一次10元")
  13. BigHeadSon.washing()
  14. }
  15. }
  1. package DL
  2.  
  3. class Demo {
  4. }
  5.  
  6. fun main(args: Array<String>) {
  7. //单例模式
  8. BigHeadSon.washing()
  9. }

枚举的使用:

  1. package DL
  2.  
  3. enum class Week {
  4. 星期一,星期二,星期三,星期四,星期五,星期六,星期日
  5. }
  6.  
  7. fun main(args: Array<String>) {
  8.  
  9. println( Week.星期一.ordinal)//获取元素位置
  10. }

印章类型:个人感觉像是内部类

枚举更在意数据,sealed更在意数据类型。

  1.  

从零开始学Kotlin第四课的更多相关文章

  1. 从零开始学Kotlin第六课

    Kotlin调用java代码: 1.如果是内部工程的类,直接调用,如果是外部的工程项目按照java的方式将jar包导入进来. 2.实例化java对象 我们之前学java的时候实例化对象是这个样子的. ...

  2. 从零开始学Kotlin第七课

    1.强制类型转换需要在后面加两个感叹号 2.如果需要在java代码调用kotlin的方法时候使用文件名+kt.方法 3.object 类名 是创建匿名内部类的写法 调用 传入class对象 4.在to ...

  3. 从零开始学Kotlin第三课

    kotlin函数和函数式表达式的简化写法: fun main(args:Array<String>) { var result=add(2,5) println(result) ///简化 ...

  4. 从零开始学Kotlin第五课

    函数式编程入门: package EL fun main(args: Array<String>) { var names= listOf<String>("tom& ...

  5. 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)

    原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)  1.安装对应dll     Update-Package Xama ...

  6. 从零开始学Kotlin第一课

    Kotlin的方法: 一个简单的计算器: fun main(args:Array<String>){ //主函数main方法 var a=8; var b=9; println(plus( ...

  7. 从零开始学Kotlin第二课

    字符串模板 fun main(args:Array<String>){ //主函数main方法 println(diaryGenerater("天安门")); } // ...

  8. Java从零开始学二十四(集合工具类Collections)

    一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...

  9. 小哈学Python第四课--运算符

    运算符: 1.算数运算符: 2. 比较运算符 3.赋值运算符 4. 逻辑运算符: 5. 成员运算:

随机推荐

  1. android和IOS自动化定位方法

    元素定位 方法:id定位,name定位(text定位),class_name定位, accessibility_id定位,xpath定位等 (目前1.5版本的已经不支持name定位了),所以APP的定 ...

  2. C++ 与 Visual Studio 2019 和 WSL

    Visual Studio 使用 C++ 的 Linux 开发(WSL) https://devblogs.microsoft.com/cppblog/c-with-visual-studio-201 ...

  3. Vim合并行

    日常常用到多行合并的功能,记录如下: 第一种, 多行合并成一行,即: AAAAABBBBBCCCCC 合并为:AAAAA BBBBB CCCCC 方法1: normal状态下 3J 其中的3是范围,可 ...

  4. python filter lambda 的使用

    lambda 匿名函数的使用 >>> a=lambda x : x in "1234567890.," >>> a("asd" ...

  5. python中对列表的排序

    1.sort()对列表永久性的排序,首字母按照字母表的顺序排列 book=['python','java','c++','web'] book.sort() print(book) 结果如下: 2.向 ...

  6. SpringBoot打包到docker(idea+传统方式)

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 1. 方式1.通过idea 远程发布 1.1 修改docker.service文件 1. 进入服务器 2. 修改ExecStart行为下面内容 ...

  7. Convolutional Neural Network-week1编程题(一步步搭建CNN模型)

    Convolutional Neural Networks: Step by Step implement convolutional (CONV) and pooling (POOL) layers ...

  8. 【二食堂】Alpha - 项目展示

    项目展示 1. 团队介绍 二食堂很难排队 姓名 介绍 职务 刘享 热爱游戏,尤其是RPG和metrovinia类的游戏. 会C/C++, python, java. 后端 左正 一个普通的大学生,Py ...

  9. matplotlib.legend()函数用法

    用的较多,作为记录 legend语法参数如下: matplotlib.pyplot.legend(*args, **kwargs) 几个暂时主要用的参数: (1)设置图例位置 使用loc参数 plt. ...

  10. 华为HCIP-Eth-trunk原理知识点

    Eth-trunk(端口聚合.链路捆绑.链路聚合.以太通道) Eth-trunk技术出现的原因: • 随着网络中部署的业务量不断增长,对于全双工点对点链路,单条物理链路的带宽已不能满足正常的业务流量 ...