📅  最后修改于: 2023-12-03 14:43:42.048000             🧑  作者: Mango
Kotlin 是一种面向对象的编程语言,具有许多先进的特性。其中之一是构造函数。在本文中,我们将深入探讨 Kotlin 构造函数及其用法。
构造函数是类中的一个特殊方法,用于创建新对象时初始化其属性。在 Kotlin 中,一个类可以有一个主构造函数和多个辅助构造函数。
主构造函数是类头的一部分,并且位于类名后面。它可以包含参数和可见性修饰符:
class MyClass constructor(name: String) {
// 类的属性
}
如果主构造函数没有可见性修饰符或注释,则关键字 constructor 可省略。
class MyClass(name: String) {
// 类的属性
}
我们可以通过在主构造函数的参数上添加 val 或 var 来将其定义为属性:
class MyClass(val name: String, var age: Int) {
// ...
}
在上面的示例中,name 是只读属性(val),age 是可写属性(var)。
Kotlin 中的辅助构造函数是通过 constructor 关键字加上函数名和参数列表来定义的:
class MyClass {
constructor(name: String) {
// ...
}
constructor(name: String, age: Int) {
// ...
}
}
辅助构造函数必须调用类中的其他构造函数,可以是主构造函数或其他辅助构造函数:
class MyClass(val name: String, var age: Int) {
constructor(name: String) : this(name, 0) {
// ...
}
}
class MyClass {
var name: String = ""
var age: Int = 0
constructor(name: String) {
this.name = name
}
constructor(name: String, age: Int) : this(name) {
this.age = age
}
}
在上面的示例中,第一个 MyClass 类的辅助构造函数调用了主构造函数,第二个 MyClass 类的辅助构造函数调用了其他辅助构造函数。
初始化块是构造函数中执行的一个代码块。在 Kotlin 中,我们可以使用 init 关键字定义一个初始化块:
class MyClass(val name: String, var age: Int) {
init {
println("初始化块执行")
}
// ...
}
初始化块在主构造函数之后执行,辅助构造函数在调用其他构造函数之后执行。
在 Kotlin 中,一个子类必须在其主构造函数中初始化其父类。如果父类没有无参构造函数,则必须在子类主构造函数中调用父类的构造函数:
open class Person(val name: String, var age: Int) {
}
class Student(name: String, age: Int, val grade: Int) : Person(name, age) {
}
在上面的示例中,Student 类必须在其主构造函数中调用 Person 类的构造函数。
构造函数是在创建新对象时初始化其属性的特殊方法。Kotlin 中的一个类可以有一个主构造函数和多个辅助构造函数。辅助构造函数必须调用类中的其他构造函数。初始化块是构造函数中执行的一个代码块。在 Kotlin 中,一个子类必须在其主构造函数中初始化其父类。