📅  最后修改于: 2023-12-03 14:43:42.185000             🧑  作者: Mango
Kotlin 是一种现代化的静态类型编程语言,它可以在 JVM、Android、浏览器或本地机器上运行。类是 Kotlin 程序的构建块之一,构造函数是 Kotlin 类的重要部分之一。
在 Kotlin 中,构造函数可以分为两种类型:主构造函数和次构造函数。
主构造函数是类头的一部分,它紧随类名后面,可以声明零个或多个参数。如果构造函数没有任何注释或可见性修饰符,则可以省略 constructor 关键字:
class Person(firstName: String, lastName: String) {
// 类体
}
如果主构造函数包含注释或可见性修饰符,则必须要声明 constructor 关键字:
class Person constructor(firstName: String, lastName: String) {
// 类体
}
次构造函数是类体的一部分,每个次构造函数都必须调用类中的另一个构造函数,可以是主构造函数,也可以是其他次构造函数。使用关键字 constructor 声明次构造函数:
class Person(firstName: String, lastName: String) {
constructor(name: String) : this(name.split(" ")[0], name.split(" ")[1]) {
}
}
在次构造函数中,必须使用 this 关键字调用主构造函数或其他次构造函数。
在 Kotlin 中,可以在构造函数参数列表中声明成员变量并初始化,也可以在类体中声明并初始化成员变量。
在构造函数参数列表中声明并初始化变量:
class Person(val firstName: String, var lastName: String) {
// 类体
}
在类体中使用 init 代码块初始化变量:
class Person(firstName: String, lastName: String) {
val fullName: String
init {
fullName = "$firstName $lastName"
}
}
如果成员变量在类初始化时无法准备好,可以使用 lateinit 关键字对其进行延迟初始化。延迟初始化的变量不需要初始化值,但必须在使用前进行初始化。
class Person(firstName: String, lastName: String) {
lateinit var fullName: String
init {
initFullName(firstName, lastName)
}
private fun initFullName(firstName: String, lastName: String) {
fullName = "$firstName $lastName"
}
}
Kotlin 中的类构造函数是一个重要的概念,可以通过不同的构造函数来初始化不同的成员变量。主构造函数和次构造函数都有自己的语法,可以根据需要选择不同的方式。同时,成员变量也可以在构造函数参数列表中声明并初始化,或者在类体中使用 init 代码块初始化。如果需要延迟初始化变量,可以使用 lateinit 关键字进行延迟初始化。