首页 > 其他 > 详细

Kotlin入门(3)

时间:2020-08-30 09:16:14      阅读:88      评论:0      收藏:0      [点我收藏+]
  • 构造函数
    • Kotlin的构造函数分为两部分,第一部分是主构造函数,第二部分是次级构造函数
      • 对于主构造函数来说,是和类一起定义的 class my_class constructor (var name:String,var score:Number)
      • init代码块,在类创建时额外调用
      • init在次级构造器之前
        技术分享图片
      • 由于次级构造函数,一般会利用:this(name,age)等来间接调用主构造函数帮助构造
      • 因此 ,主构造函数,一般是最少参数的情况
  • 继承
    • Kotlin一般类中的变量和方法,都默认有final属性
    • 想要继承,类,变量,方法 解决方案 :
      • 上述东西前加open
      • 在重写方法时,override注解会被替换为override关键字
      • 通过override关键字限定的方法,也会默认被下次override掉
  • 抽象类
    • 抽象类反应的是类的本质,它看起来和JS的原型有些像
    • 抽象类中可以实现一些方法和属性,一般都是抽象的,供继承者调用
      • 要么抽象,要么就实现完
    • 语法
      • abstract Human(){
        • abstract var name:String
        • abstract var age:Int
        • abstract fun eat()
      • }
      • //可以在Class内部用Override关键字去替换属性,也可以在主构造函数中使用override关键字
      • Class Student(override var name:String,override var age:Int):Human(){
        • override eat(){ //eat关键字 }
      • }
  • 接口
    • 接口反应的是事物的特性,不论是implement还是extends,都用 : 代替
    • 接口中是抽象方法,也可以写字段,但是不能赋值
      • abstract
      • val a:Int
    • 默认是抽象方法?
  • 多态
    • 我是一个父类,但是调用子类的构造函数
    • 这是我就有子类的方法
  • 智能类型推断
    • 如果判断a是A的实例,那么此时a就自动被转换为A类型
    • is 包含了 推断的功能
  • 内部类
    • 如果定义一个内部类,那么默认情况下,它是静态的
    • 意思是,和外部类没有任何关系
    • 想要有关系的话,我们就使用inner关键字,此时就可以在内部类中拿到外部类的变量和方法
    • this的使用
      • 在Kotlin的内部类中使用this@X
      • 在嵌套多层内部类时,X是你想找的变量所在的那个类
      • this指针是超越层级的
  • 中缀表达式 infix关键字
    • 作用:增强语义
    • 必须是成员函数
    • 函数只有一个参数
    • 参数不能是vararg可变参数,也不能有默认值
  • 懒加载和延迟绑定
    • 都可以单独成立
    • 懒加载 by lazy { }
      • 确定该值,用时再赋值
      • 必须val
    • 延迟绑定 lateinit val name:String
      • 值不确定,延迟绑定
      • 必须var
  • 扩展函数(伴随函数)
    • 作用:代替Utils静态类
    • this呀什么的,和在普通的类中是一样的,随便给你调用
    • 不可以被继承,只能被父类使用
    • fun YourClass.YourBindIngFunction(){
      • // YourCode
    • }
  • 数据类,单例类,枚举类
    • 数据类:data
    • 单例类:Object
    • 枚举类:enum
  • 密封类:
    • sealed
    • 其中枚举的是Class,封装很多的class
  • 单例模式
    • by lazy
      • 只能加载一次
      • 同步的,线程安全的
      • 已经确定值的,代码块的最后一句是返回值
    • Companion Object 代码块
      • 里面的变量是静态的
      • 方法也都是静态的
    • Object关键字
      • 属性都静态
      • 方法不是静态的
      • 可能占据大量内存
  • 委托
    • 在实现某个接口时,委托某个以实现的类来实现
    • 自己当然可以实现类的方法
    • 不过也可以直接调用被委托的类,简单来说,把被委托的类当作工具人
    • 关键字 by

Kotlin入门(3)

原文:https://www.cnblogs.com/frontend-tutorial/p/13584041.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!