Kotlin的构造函数Constructor

本文详细解析Kotlin中的主构造函数、次构造函数及init块的用法,探讨它们的执行顺序,并通过实例演示。理解如何初始化数据并确保构造过程的正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、构造函数

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值