类与继承
类
Kotlin使用关键字class声明类
//简洁的语法声明属性及其主构造函数初始化属性
class Person(val firstName: String, val lastName: String, var age: Int) { /……/ }
构造函数
概念:在 Kotlin 中的一个类可以有一个主构造函数以及一个或多个次构造函数。主构造函数是类头的一部分:它跟在类名(与可选的类型参数)后
class Person constructor(firstName: String) { /……/ }
主构造函数:
- 如果主构造函数没有任何注解或者可见修饰符,可以省略这个constructor 关键字。
- 主构造函数不能包含任何代码。初始化的代码可以放到init关键字作为前缀的初始化块中
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also(::println)
init {
}println("First initializer block that prints ${name}")
val secondProperty = "Second property: ${name.length}".also(::println)
init {
}println("Second initializer block that prints ${name.length}")
}
//打印结果
First property: hello
First initializer block that prints hello
Second property: 5
Second initializer block that prints 5 - 注意:主构造函数中的参数可以在初始化快中使用,也可以在类体声明的属性初始化器中使用。
次构造函数:前缀是constructor的构造函数,可以有多个。
- 如果类有主构造函数。每个次构造函数需要委托给主构造函数,可以直接委托或者通过别的次构造函数间接委托。 委托到同一个类的另一个构造函数 用this关键字即可。
class Person(val name: String) {
var children: MutableList= mutableListOf ();
constructor(name: String, parent: Person) : this(name) {
}parent.children.add(this)
}
- 如果类有主构造函数。每个次构造函数需要委托给主构造函数,可以直接委托或者通过别的次构造函数间接委托。 委托到同一个类的另一个构造函数 用this关键字即可。