Kotlin 构造函数


在本章中,我们将学习 Kotlin 中的构造函数。 Kotlin 有两种类型的构造函数——一种是主构造器另一个是二级构造函数.一个 Kotlin 类可以有一个主构造函数和一个或多个辅助构造函数。 Java 构造函数初始化成员变量,然而,在 Kotlin 中,主构造函数初始化类,而辅助构造函数有助于在初始化时包含一些额外的逻辑。可以在类头级别声明主构造函数,如下例所示。

class Person(val firstName: String, var age: Int) {
    // 类体
}

在上面的例子中,我们在括号内声明了主构造函数。这两个字段中,first name 是只读的,因为它被声明为“val”,而字段age 是可以编辑的。在下面的示例中,我们将使用主构造函数。

fun main(args: Array<String>) {
    val person1 = Person("Newbiego.com", 15)
    println("First Name = ${person1.firstName}")
    println("Age = ${person1.age}")
}
class Person(val firstName: String, var age: Int) {
}

上面这段代码将自动初始化这两个变量并在浏览器中提供以下输出。

First Name = Newbiego.com
Age = 15

如前所述,Kotlin 允许为你的类创建一个或多个二级构造函数。这个二级构造函数是使用“constructor”关键字创建的。每当你想在 Kotlin 中创建多个构造函数时,或者当你想在主构造函数中包含更多逻辑时都需要它,而你不能这样做,因为主构造函数可能会被其他某个类调用。看看下面的例子,我们创建了一个二级构造函数,并使用上面的例子来实现它。

fun main(args: Array<String>) {
    val HUman = HUman("Newbiego.com", 25)
    print("${HUman.message}"+"${HUman.firstName}"+
        "Welcome to the example of Secondary  constructor, Your Age is-${HUman.age}")
}
class HUman(val firstName: String, var age: Int) {
    val message:String  = "Hey!!!"
	constructor(name : String , age :Int ,message :String):this(name,age) {
    }
}

注意: 可以创建任意数量的二级构造函数,但是,所有这些构造函数都应该直接或间接调用主构造函数。

上面的代码将在浏览器中产生以下输出。

Hey!!! Newbiego.comWelcome to the example of Secondary  constructor, Your Age is- 25