这是码上开学 Kotlin 系列第一集的文章结构要求。
这篇文档是唯一对文章内容作出约束的文档。如果你要写文章,只参考这一篇文档就可以。(不过如果先读一下对应的视频脚本,会对写文章有帮助。但这个不强制哟。)
文章标题已经给出,正式发布时的标题会一个字、一个标点都不差。如果你需要改标题,请务必先联系扔物线(朱凯),谢谢!
这篇文档可能在后续过程中会有修改,到时候文章也需要跟着修改。我尽量不修改,但无法保证,毕竟水平有限:joy:。
如果有不同意见请先来找我讨论,不要直接自我修改文章结构哟。——扔物线
- 声明变量时的格式:
-
需要初始化,否则会报错。进而:
-
由「初始化时赋值
null
」引出 Kotlin 的空安全设计:Kotlin 默认要求对象不可空。
两个解决方案:
lateinit
:变量的声明者(程序员)确定这个变量在使用时不会为空,但没法第一时间给它初始值;- 确实由于某些原因,这个变量真的可能有时需要是空值:用问号——
var name: Type?
-
-
类型推断:
var name = "rengwuxian"
-
var
和val
:var
是「可读可写变量」(其实就是变量);val
是「只读变量」,相当于 Java 的final
,但又不太一样(不一样在于val
可以定制 getter 来让自己哪怕只读也依然值是动态的,不过这个属于自定义 getter 的范畴,所以可以放在后面函数部分的自定义 getter 再讲);
-
Kotlin 的 property 默认是
public
的。
-
函数的声明格式:
-
getter / setter
-
这种设计的作用:
- 主要作用:在读写数据的时候增加操作,比如日志。
- 另类作用:修改赋值和取值的算法,比如
getSize() {return items.size}
。(接上了上面说的「Kotlinval
和 Javafinal
的不同」。
- 另类作用:修改赋值和取值的算法,比如
- 主要作用:在读写数据的时候增加操作,比如日志。
int/Integer
float/Float
-> Int
Float
- 使用上有什么区别?
- Android 工程师的疑问:没了
int
,会不会有什么暂时想不到的麻烦?
-
默认依然是
public
的 -
extends
/implements
->:
-
constructor
-
方法的重写:
- 默认是 final 类,可继承的类要主动写
open
@Override
->override
override
和open
的遗传性abstract
和open
- 默认是 final 类,可继承的类要主动写
-
inner
和static
类型 -
internal
-
annotation 和 enum 的声明
Any
和Object
- 有什么区别?
- 有什么暂时想不到的麻烦?
- 类型的判断和强转
::class
,.javaClass
,::class.java