📜  kotlin 类构造函数 (1)

📅  最后修改于: 2023-12-03 14:43:42.185000             🧑  作者: Mango

Kotlin 类构造函数

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 关键字进行延迟初始化。