Kotlin的构造函数Constructor

一、构造函数

        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方法,最后才是执行了次构造方法。(尽管我们是调用了次构造函数实例化的)

猜你喜欢

转载自blog.csdn.net/sunbinkang/article/details/124600421