# 深入 Kotlin 预计时间 3d 确保你已经了解所有的基础语法,这很重要。 ## 更全面的 class 用法 ### 更加详细的 class 构造函数与对象初始化 #### 类初始化 在 Kotlin 的类定义中可以写 `init {}` 代码块,它发生在构造函数之后,作用是使用构造函数定义的成员变量值再做一些构造函数没有的操作,比如利用构造函数的参数再做一些细致的变量处理。 #### 构造函数 构造函数有多种写法: 1. 直接写在类名之后 ```kotlin class MyClass( val a: Int, private var b: String, c: Int // 这里的变量 c 仅用于成员初始化,随后被抛弃,不作为成员变量 ) { val d = c * a // something else } ``` ```kotlin class MyClass private constructor( // 非私有时,constructor 可省 // ... ) { // something else } ``` 2. 写在类定义之内 ```kotlin class MyClass { val d: Int constructor( val a: Int, private var b: String, c: Int ) { d = c * a } // something else } ``` 3. 构造函数调用其他构造函数 ```kotlin class MyClass( var name: String?, val amount: Int ) { constructor( val amount: Int ) : this(null, amount) // something else } ``` ### 伴生对象 定义方法: ```kotlin companion object {} ``` 它的使用和 object 完全一致,用于替代 Java 中的 static 修饰符。是一个非常方便的东西。 ### 类继承细节 ### 泛型类 ### 特殊类函数 #### component 函数 #### 重写 toString #### 重载运算符 ## 委托 ## 特殊函数 ### 嵌套 lambda 与注解 ### 泛型函数 ### infix 函数 ### 扩展函数 #### 概念与 lambda 变量类型 #### 常用的扩展函数 ##### apply ```kotlin ``` ##### also ```kotlin ``` ##### let `let` 可以让一段代码只在对象非空时执行: ```kotlin val name: String? = "Kotlin" name?.let { println("长度是 ${it.length}") } ``` 如果 `name` 是 `null`,`let` 里面的代码不会执行。 ##### use ##### run ```kotlin ``` ### suspend 函数 ## 文件 IO ```kotlin ``` ## 用 Gradle 加载依赖(外部库) ```kotlin ``` ## Kotlin 反射 ```kotlin ``` ## 定义一个特殊的变量/函数名 ```kotlin ``` ## 接下来可以看 [目录](../README.md) [下一篇:Kotlin Springboot](./Kotlin-Springboot.md) [更进一步:成为 Kotlin 超人](./成为Kotlin超人.md) [进入 KMP](./进入KMP.md)