返回

快速上手 Kotlin 开发系列之构造函数

Android

在前面的文章中,我们简单介绍了类的声明。现在,让我们回顾一下。与 Java 类似,同样使用 class 来声明一个类,后面紧跟着类名,如果该类有父类的话使用 : 分隔,如果该类需要实现接口,则直接使用 , 跟在后面即可,而不是用 implement 关键字。接口和父类没有先后顺序。

在 Kotlin 中,类可以定义构造函数来初始化对象的状态。构造函数与类的名称相同,没有返回值类型。构造函数可以有参数,也可以没有参数。有参数的构造函数可以接受一个或多个参数,并将其赋值给类的属性。

Kotlin 中的构造函数主要分为两种类型:

  • 主构造函数 :主构造函数是类中唯一没有函数体(即没有 { })的构造函数。主构造函数的参数列表放在类名后面,并且不能有默认值。主构造函数用于初始化类的属性,并且在创建对象时自动调用。
  • 次构造函数 :次构造函数是类中可以有多个的构造函数,并且有函数体(即有 { })。次构造函数的参数列表放在类名后面,并且可以有默认值。次构造函数用于初始化类的属性,并且在创建对象时可以显式调用。

主构造函数

主构造函数用于初始化类的属性。主构造函数的参数列表放在类名后面,并且不能有默认值。主构造函数在创建对象时自动调用。

class Person(val name: String, val age: Int) {

    // 省略其他代码

}

fun main() {
    val person = Person("John", 25)
    println("Name: ${person.name}, Age: ${person.age}")
}

在上面的代码中,Person 类的主构造函数有两个参数:name 和 age。当创建 Person 对象时,这两个参数必须被指定。主构造函数会将这两个参数的值分别赋值给类的 name 和 age 属性。

次构造函数

次构造函数用于初始化类的属性。次构造函数的参数列表放在类名后面,并且可以有默认值。次构造函数在创建对象时可以显式调用。

class Person(val name: String, val age: Int) {

    constructor(name: String) : this(name, 0) {

        // 省略其他代码

    }

    fun main() {
        val person1 = Person("John", 25)
        val person2 = Person("Jane")
        println("Name: ${person1.name}, Age: ${person1.age}")
        println("Name: ${person2.name}, Age: ${person2.age}")
    }
}

在上面的代码中,Person 类有一个次构造函数,该构造函数只有一个参数:name。次构造函数会调用主构造函数,并将 name 参数的值传递给主构造函数的 name 参数。次构造函数还将 age 参数的值设置为默认值 0。

构造函数的重载

Kotlin 中的构造函数可以重载。这意味着同一个类中可以有多个构造函数,但是这些构造函数的参数列表必须不同。构造函数的重载可以使类的创建更加灵活。

class Person(val name: String, val age: Int) {

    constructor(name: String) : this(name, 0) {

        // 省略其他代码

    }

    constructor(name: String, age: Int, address: String) : this(name, age) {

        // 省略其他代码

    }

    fun main() {
        val person1 = Person("John", 25)
        val person2 = Person("Jane")
        val person3 = Person("Jack", 30, "123 Main Street")
        println("Name: ${person1.name}, Age: ${person1.age}")
        println("Name: ${person2.name}, Age: ${person2.age}")
        println("Name: ${person3.name}, Age: ${person3.age}, Address: ${person3.address}")
    }
}

在上面的代码中,Person 类有两个次构造函数。第一个次构造函数只有一个参数:name。第二个次构造函数有两个参数:name 和 age。第三个次构造函数有三个参数:name、age 和 address。

总结

Kotlin 中的构造函数用于初始化类的属性。构造函数可以分为主构造函数和次构造函数。主构造函数没有函数体,并且在创建对象时自动调用。次构造函数有函数体,并且可以在创建对象时显式调用。构造函数可以重载,这意味着同一个类中可以有多个构造函数,但是这些构造函数的参数列表必须不同。