Kotlin学习记录

Kotlin学习记录

  • 1. 权限修饰符
    • 1.1 internal 修饰符
    • 1.2 open 修饰符
  • 2 其它修饰符
    • 2.1 lateinit 修饰符
    • 2.2 var 修饰符 (变量)
    • 2.3 val 修饰符 (常量)
  • 3 申明对象
    • 3.1 申明对象不赋值
    • 3.2 申明对象并实例化
    • 3.3 申明常量并用 by lazy 懒加载

1. 权限修饰符

除了java的 publicprotecteddefaultprivate 外,又有独特的 internalopen 修饰符。

1.1 internal 修饰符

直译为内部的,访问范围是当前模块可见。使用示例:

// 可以对类修饰
internal class MapboxNavigationAppDelegate { }

// 可以对常量修饰,val 为申明常量,var 为申明变量
internal val carAppLifecycleObserver = object : DefaultLifecycleObserver { }

// 可以对构造方法和变量修饰
class EtcGateApi internal constructor(
    internal var experimental: com.mapbox.navigator.Experimental
) {  }

1.2 open 修饰符

默认情况下 class 和成员都是具备 final 修饰符的,即无法被继承和复写。
如果可以被继承或复写,需要添加 open 修饰。使用示例:

open class AutoArrivalController : ArrivalController { }

open fun nextChain(chain: AudioTypeResolver) {  }

更多kotlin权限修饰符介绍参考

2 其它修饰符

2.1 lateinit 修饰符

  • 延迟初始化,但又相当于有java中的 @NotNull 注解,所以在使用之前必须已经实例化,否则会报错。
  • lateinit 不能用来修饰基本数据类型,因为基本类型的属性在类加载后的准备阶段都会被初始化为默认值。
  • lateinit不能修饰val常量,只能修饰可变的属性。

2.2 var 修饰符 (变量)

2.3 val 修饰符 (常量)

3 申明对象

3.1 申明对象不赋值

private lateinit var navigationCamera: NavigationCamera

3.2 申明对象并实例化

private val navigationLocationProvider = NavigationLocationProvider()

3.3 申明常量并用 by lazy 懒加载

类似 lateinit 修饰符 ,但这个懒加载用来申明常量,而 lateinit 修饰符 只能用来申明变量。

private val overviewPadding: EdgeInsets by lazy {
    EdgeInsets(
        140.0 * pixelDensity,
        40.0 * pixelDensity,
        120.0 * pixelDensity,
        40.0 * pixelDensity
    )
}

你可能感兴趣的:(android,kotlin)