- Kotlin 教程
- Kotlin - 主页
- Kotlin - 概述
- Kotlin - 环境设置
- Kotlin - 架构
- Kotlin - 基本语法
- Kotlin - 评论
- Kotlin - 关键字
- Kotlin - 变量
- Kotlin - 数据类型
- Kotlin - 运算符
- Kotlin - 布尔值
- Kotlin - 字符串
- Kotlin - 数组
- Kotlin - 范围
- Kotlin - 函数
- Kotlin 控制流程
- Kotlin - 控制流
- Kotlin - if...Else 表达式
- Kotlin - When 表达式
- Kotlin - For 循环
- Kotlin - While 循环
- Kotlin - 中断并继续
- Kotlin 集合
- Kotlin - 集合
- Kotlin - 列表
- Kotlin - 集
- Kotlin - 地图
- Kotlin 对象和类
- Kotlin - 类和对象
- Kotlin - 构造函数
- Kotlin - 继承
- Kotlin - 抽象类
- Kotlin - 接口
- Kotlin - 可见性控制
- Kotlin - 扩展
- Kotlin - 数据类
- Kotlin - 密封类
- Kotlin - 泛型
- Kotlin - 委托
- Kotlin - 解构声明
- Kotlin - 异常处理
- Kotlin 有用资源
- Kotlin - 快速指南
- Kotlin - 有用的资源
- Kotlin - 讨论
Kotlin - 构造函数
Kotlin 构造函数是类中的特殊成员函数,在实例化对象时会调用它。每当创建一个对象时,都会自动调用定义的构造函数,用于初始化类的属性。
每个 Kotlin 类都需要有一个构造函数,如果我们不定义它,那么编译器会生成一个默认构造函数。
Kotlin 类可以有以下两种类型的构造函数:
主要构造函数
第二建造者
Kotlin 类可以有一个主构造函数和一个或多个附加的辅助构造函数。Kotlin 主构造函数初始化类,而辅助构造函数有助于在初始化类时包含一些额外的逻辑。
Kotlin 主构造函数
主构造函数可以在类头级别声明,如下例所示。
class Person constructor(val firstName: String, val age: Int) { // class body }
如果没有指定注释或访问修饰符(如 public、private 或 protected),则可以省略构造函数关键字。
class Person (val firstName: String, val age: Int) { // class body }
在此示例中,我们通过val关键字声明属性以使其只读。如果您需要稍后更改这些属性的值,可以使用关键字var定义这些属性。
初始化块
主构造函数不能包含任何代码。初始化代码可以放置在以init关键字为前缀的初始化块中。可能有多个init块,并且在实例的初始化期间,初始化器块按照它们在类主体中出现的顺序执行,并与属性初始化器交错:
以下是使用初始化块的示例:
class Person (val _name: String, val _age: Int) { // Member Variables var name: String var age: Int // Initializer Block init { this.name = _name this.age = _age println("Name = $name") println("Age = $age") } } fun main(args: Array<String>) { val person = Person("Zara", 20) }
当你运行上面的 Kotlin 程序时,它将生成以下输出:
Name = Zara Age = 20
默认值
Kotlin 允许使用一些默认值初始化构造函数参数。以下是相同的工作示例:
class Person (val _name: String, val _age: Int=20) { // Member Variables var name: String var age: Int // Initializer Block init { this.name = _name this.age = _age println("Name = $name") println("Age = $age") } } fun main(args: Array<String>) { val zara = Person("Zara") val nuha = Person("Nuha", 11) }
当你运行上面的 Kotlin 程序时,它将生成以下输出:
Name = Zara Age = 20 Name = Nuha Age = 11
Kotlin 二级构造函数
如前所述,Kotlin 允许为您的类创建一个或多个辅助构造函数。该辅助构造函数是使用constructor关键字创建的。每当您想要在 Kotlin 中创建多个构造函数,或者每当您想要在主构造函数中包含更多逻辑,但您无法这样做,因为主构造函数可能会被其他某个类调用时,就需要使用它。
例子
看一下下面的例子,这里我们创建了一个辅助构造函数来再次实现上面的例子:
class Person{ // Member Variables var name: String var age: Int // Initializer Block init { println("Initializer Block") } // Secondary Constructor constructor ( _name: String, _age: Int) { this.name = _name this.age = _age println("Name = $name") println("Age = $age") } } fun main(args: Array<String>) { val zara = Person("Zara", 20) }
当你运行上面的 Kotlin 程序时,它将生成以下输出:
Initializer Block Name = Zara Age = 20
辅助构造函数不允许将val或var与辅助构造函数参数一起使用。现在让我们看一个带有两个辅助构造函数的示例:
class Person{ // Member Variables var name: String var age: Int var salary:Double // First Secondary Constructor constructor ( _name: String, _age: Int) { this.name = _name this.age = _age this.salary = 0.00 println("Name = $name") println("Age = $age") } // Second Secondary Constructor constructor ( _name: String, _age: Int, _salary: Double) { this.name = _name this.age = _age this.salary = _salary println("Name = $name") println("Age = $age") println("Salary = $salary") } } fun main(args: Array<String>) { val nuha = Person("Nuha", 12) val zara = Person("Zara", 20, 2000.00) }
当你运行上面的 Kotlin 程序时,它将生成以下输出:
Name = Nuha Age = 12 Name = Zara Age = 20 Salary = 2000.0
测验时间(面试和考试准备)
答案:B
解释
尽管如果没有指定注释或访问修饰符,则可以省略构造函数关键字。