哈哈,没想到吧?今晚又更新啦!
大家好,我是扔物线朱凯。这是码上开学 Kotlin 基础部分的第三期:Kotlin 里那些「更方便的」。老朋友不废话,先上视频:
看完视频还不过瘾?
可以点击下方「阅读原文」或者用浏览器打开 kaixue.io/kotlin-basic-3 ,把和视频配套的文章看了。
文章部分内容预览:
在上期内容当中,我们介绍了 Kotlin 的那些与 Java 写法不同的地方。这一期我们再进阶一点,讲一讲 Kotlin 中那些「更方便的」用法。这些知识点在不知道之前,你也可以正常写 Kotlin,但是在熟悉之后会让你写得更爽。
构造器
主构造器
我们之前已经了解了 Kotlin 中 constructor 的写法:
?️
class User {var name: Stringconstructor(name: String) {``this.name = name}}其实 Kotlin 中还有更简单的方法来写构造器:
?️
?
class User constructor(name: String) {// ? 这里与构造器中的 name 是同一个
var name: String = name}这里有几处不同点:
constructor
构造器移到了类名之后类的属性
name
可以引用构造器中的参数name
这个写法叫「主构造器 primary constructor」。与之相对的在第二篇中,写在类中的构造器被称为「次构造器」。在 Kotlin 中一个类最多只能有 1 个主构造器(也可以没有),而次构造器是没有个数限制。
主构造器中的参数除了可以在类的属性中使用,还可以在
init
代码块中使用:
?️
class User constructor(name: String) {var name: Stringinit {
this.name = name}}其中
init
代码块是紧跟在主构造器之后执行的,这是因为主构造器本身没有代码体,init
代码块就充当了主构造器代码体的功能。另外,如果类中有主构造器,那么其他的次构造器都需要通过
this
关键字调用主构造器,可以直接调用或者通过别的次构造器间接调用。如果不调用 IDE 就会报错:
?️
class User constructor(var name: String) {constructor(name: String, id: Int) {// ?这样写会报错,Primary constructor call expected
}}为什么当类中有主构造器的时候就强制要求次构造器调用主构造器呢?
我们从主构造器的特性出发,一旦在类中声明了主构造器,就包含两点:
必须性:创建类的对象时,不管使用哪个构造器,都需要主构造器的参与
第一性:在类的初始化过程中,首先执行的就是主构造器
完整文章可以点击下方「阅读原文」或者用浏览器打开 kaixue.io/kotlin-basic-3 查看。
这是什么项目?
码上开学,是一个针对 Android 工程师的 Kotlin 上手指南。虽然针对上手,但包含了许多你在网上任何地方(包括英文社区、包括官方文档)都看不到的必备的技术细节。
码上开学项目由扔物线创办,目前由即刻 Android 团队协作一同产出。
觉得赞?关注吧!
如果你觉得赞,就分享、转发和点击右下角的在看,让更多需要的人也看到吧。但前提一定是,你真的觉得赞。
最后,别忘了扫码关注,我们的后续内容将第一时间推送到你。