美文网首页
Kotlin-构造函数以及init调用顺序

Kotlin-构造函数以及init调用顺序

作者: 我要离开浪浪山 | 来源:发表于2021-11-22 12:07 被阅读0次

1、先说结论:

主构造函数-->init代码块-->次构造函数

2、主构造函数和次构造函数

以下代码,通过调用次构造函数实例化对象。观察输出日志,执行次构造函数时,nameT已经有值,所以可以得知主构造函数先于次构造函数执行。这里要把var nameT: String = name当成主构造函数的一部分。

 //主构造函数
class Demo2(name: String) {
    //主构造函数的一部分
    var nameT: String = name

    //次构造函数
    constructor(name: String, age: Int) : this(name) {
        println("nameT=${nameT}")
        println("secondary constructor")
    }
}
//----main 中调用----
Demo2("yang",18)
//----日志输出----
nameT=yang
secondary constructor

3、主构造函数和init

以下代码,通过调用主构造函数实例化对象。观察输出日志,执行init代码块时,nameT已经有值,所以主构造函数先于init代码块执行。这里同样要把var nameT: String = name当成主构造函数的一部分。

class Demo2(name: String) {
    var nameT: String = name

    init {
        println("nameT=${nameT}")
        println("int")
    }
}
//调用
Demo2("yang")
//日志输出
nameT=name2
int

4、次构造函数和init

以下代码,通过调用次构造函数实例化对象。观察输出日志,可以得知init代码块先于次构造函数执行。class Demo2{

    constructor(name: String, age: Int)  {
        println("secondary constructor")
    }

    init{
        println("init")
    }
}
//调用
Demo2("yang",18)
//日志输出
init
secondary constructor

5、总结

主构造函数执行优先级最好、init代码块次之、次构造函数执行优先级最低。


链接:https://www.jianshu.com/p/842ba8624a29

相关文章

网友评论

      本文标题:Kotlin-构造函数以及init调用顺序

      本文链接:https://www.haomeiwen.com/subject/zvputrtx.html