美文网首页
kotlin学习(四):面向对象,集合

kotlin学习(四):面向对象,集合

作者: 8ba406212441 | 来源:发表于2018-08-30 16:52 被阅读7次

学习笔记

1,智能类型转换

fun call(animal:IAnimal){
    //判断传递的具体子类类型 转换成子类型
    if(animal is IDog){                      //is 相当于java的instanceof
//        val newDog = animal as IDog       //as相当于java的强制类型转换
        animal.wangwang()              //在判断时,已经自动强转
    }else if(animal is ICat){
//        val newCat = animal as ICat
        animal.miaomiao()
    }
}

2,构造函数和次构函数

class Person1(name:String,age:Int) {    //主构函数
    //定义次构函数
    constructor(name:String,age:Int,phone:String) : this(name, age)   //次构必须调用主构函数
}

3,泛型

open class Box<T>(var thing:T)

//子类继承Box
class SonBox(thing:Int): Box<Int>(thing)

4,中缀表达式
1,在类的函数加上infix关键字
2,函数参数只能有一个

//不需要点,直接调用
person hello  "张三"

class Person{
    infix fun hello(name: String){
      println("hello $name")  
    }
}

5,类的委托方式一

//通过关键字 by 委托其去实现
interface WashPower1{
      fun wash()
    }

//大头儿子已经具备了洗碗能力
class Son1: WashPower1{
      override fun wash(){
          println("大头儿子洗碗了")
        }
  }

//小头爸爸 可以把洗碗能力委托给大头儿子实现 ,所以小头爸爸不需要是实现洗碗的方法
class SmallFather: WashPower1 by Son1(){
}

委托方式二

class SmallFather(var son:Son) : WashPower by son

6,延迟加载 当用到时候才会加载 只会加载一次 并且是线程安全的

val lazyValue :String by lazy{
      println("")  //lazy初始化
      "张三"   //最后一行返回
  }
```

7,扩展函数 ,可以代替java中的各种utils
```
//不需要定义新的对象就可以添加新的函数
//判断字符串是否为空
fun String.isEmpty(){
  if(this == null || this.length == 0){
    println("为空")
  }  
}
```

8,单例 object关键字代替class
```
//单例
object Data{
    var name = "张三"
    fun sayHello(){
      println("hello $name")  
    }
  }

//直接使用,不可用new
Data.sayHello()

```
9,实现像java一样的单例
```
//1,私有构造函数
//2,私有并静态对象引用
//3,提供静态方法获取引用属性
class Single private constructor(){
   //私有构造函数
   companion object{
        //延迟加载
         val single: String by lazy{
               Single() 
            }
      }
  }
```

10,半生对象,可以直接访问,类似java的static
```
class MyData{
   var age = 20 //需要创建对象访问
   companion object{  //半生对象,可以直接访问
        var name = "张三"  
    }

//方式二
companion objext InClass{
  
  }
  }
```
11,枚举: 一一列举
```
enum class Week{
   item1, item2, item3
  }
```

12,数据类bean, 在kotlin 中可以使用data class
```
//里面封装了java代码,get, set, hashcode, tostring,equals, copy, 构造函数
//component1, 代表第一个参数 time
data class Sms(var time:Long, var content: String, var from:String)
```

13,list集合
```

```

相关文章

  • kotlin学习(四):面向对象,集合

    学习笔记 1,智能类型转换 2,构造函数和次构函数 3,泛型 4,中缀表达式1,在类的函数加上infix关键字2,...

  • Kotlin学习之类

    Kotlin学习之类 @(Kotlin学习) Kotlin在面向对象上具有和Java相似的特征,但是针对不同的情况...

  • Kotlin学习笔记(四)-面向对象

    [toc] 前言 本章将讲解一些管对对象和基础编程的知识。如:类,接口,抽象类,数据类,扩展方法等 接口 其实这部...

  • kotlin 学习教程(四)|面向对象

    1.前言 我们都知道,Java是一种面向对象编程语言,在 Java 中,万物皆对象。其实,kotlin 也是一门面...

  • 第一天

    概述: Kotlin基础面向过程面向对象接口、扩展、泛型 为什么学习Kotlin 1.Google官方指定2.简介...

  • 六、Kotlin 类与对象

    面向对象编程(OOP) 在前面的章节中,我们学习了Kotlin的语言基础知识、类型系统、集合类以及泛型相关的知识。...

  • 第六篇:Kotlin之面向对象简单

    上篇:Kotlin之函数Lambda表达式 下篇:Kotlin之面向对象升级(一) Kotlin也支持面向对象的三...

  • kot

    #Kotlin之班门弄斧 ##面向对象 ##java和kotlin的交互 ##协程及协程框架 ## 面向对象 ...

  • 第七篇:Kotlin之面向对象升级(一)

    上篇:Kotlin之面向对象简单 本章节来介绍Kotlin面向对象的高级部分: 一. 扩展:kotlin的扩展是一...

  • day14-01-集合框架(体系概述)/02-集合框架(共性方法

    2:集合(Collection)(掌握)(1)集合的由来?我们学习的是Java -- 面向对象 -- 操作很多对象...

网友评论

      本文标题:kotlin学习(四):面向对象,集合

      本文链接:https://www.haomeiwen.com/subject/qvorwftx.html