面向对象

  • Any—Java中的Object
  • open,默认的类和方法都是final的,想要继承需要open
  • 创建对象classname(),不用new关键字
  • override不可省略
  • data class 类似于c中的结构体
  • is Java 中的 instanceof
  • as as? 安全的类型转换,转换失败时不抛异常
  • 空类型安全 ?: !!
  • package 包,类似于C++中的namespace
  • lateinit 延迟初始化属性
  • by lazy
  • 运算符重载 infix 中缀表达式
  • 接口中包含抽象方法和方法实现,冲突super<Parent>.fun
  • 接口代理 by
  • 扩展方法 classname.fun
  • 伴生对象 companion object @JvmStatic 静态方法/类方法
  • 可见性:internal 模块内可见
  • 数据类,再见javabean,final class , 没有默认的无参构造方法,allopen和noarg插件,编译器会自动生成常用方法toString(), hashcode()…
  • sealed class 密封类,子类有限的类,子类只能定义在同一个文件内
  • 枚举,实例可数
  • 继承冲突 super<A>.x()
  • T::class.java

类成员

lateinit 延迟初始化属性

属性代理 by lazy{}

by delegator

  • LazyThreadSafetyMode.SYNCHRONIZED
  • LazyThreadSafetyMode.PUBLICATION
  • LazyThreadSafetyMode.NONE