一、构造函数
????????kotlin里面的构造函数分为主构造函数和次构造函数。主构造函数只能有一个,次构造函数个数不限制,可以有一个或者多个。
1.主构造函数
//一般的主构造写法
class Student constructor(){
}
//当主构造方法没有任何注解或者可见性修饰符时,可以省略(),写成下面这样
class Student {
}
//主构造方法如下,跟在类名后面,有参数
class Student constructor(name:String){
}
//这种就是有注解标记的主构造方法,不能省略
class Student @Inject internal constructor(){
}
2.次构造函数
//次构造方法,一个无参的次构造方法,一个有一个参数的次构造方法
class Person {
//无参
constructor(){
}
//有参
constructor(name:String){
}
}
我们可以看到主构造方法是没有方法体的,那么,我们需要初始化的数据应该放到哪呢?kotlin提供了init方法,给我们初始化数据。
init{
print("222")
}
3.那么主构造、次构造、init的执行顺序呢?
class ConstructorDemo(c: String) {//主构造
constructor(a: String, b: Int) : this(a + b) {
println("次构造,${a + b}")
}
init {
println("init, $c")
}
}
fun main() {
val p = ConstructorDemo("6", 1)
}
执行结果:
结论:?
????????可以看到这里最先执行主构造,因为我们在init中已经拿到了c的值;其次是执行init方法,最后才是执行了次构造方法。(尽管我们是调用了次构造函数实例化的)
|