- 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 - Break 和 Continue
- 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),则可以省略constructor关键字。
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
解释
尽管如果未指定任何注释或访问修饰符,则可以省略constructor关键字。