一壶浊酒喜相逢。古今多少事,都付笑谈中。
继承
通过在子类与其父类之间使用
:
运算符来指明其继承关系创建一个MainActivity继承自AppCompatActivity
需替换函数,请使用
override
关键字引用父类中的函数,请使用
super
关键字
空安全
维护类型安全
默认情况下,对对象的引用不能包含 null 值
不可为 null val name: String = null
允许 null 值,必须使用可为 null String 类型 String? val name: String? = null
伴生对象
类似于Java 的
static
关键字连接变量、函数和类定义,而无需引用该类的任何特定实例
推迟初始化 lateinit
使用
lateinit
时,您应尽快初始化属性usernameEditText未初始化抛出异常:UninitializedPropertyAccessException
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property usernameEditText has not been initialized at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:21) at android.app.Activity.performCreate(Activity.java:6698) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6121) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:892) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
Java @Nullable
注释 / Kotlin ?
总结:
Java 继承 extends / Kotlin :
Java 空 @Nullable / Kotlin ?
Java 静态变量 static / Kotlin Companion
Kotlin 延迟初始化 lateint