Kotlin构造函数

本文介绍了Kotlin中的构造函数,包括主构造函数和次构造函数的使用。主构造函数无代码,初始化通过init块,可声明全局变量。次构造函数不能有val或var声明,需委托给主构造函数。示例展示了正确和错误的使用方式。

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

构造函数

当Kotlin中的类需要构造函数时,可以有一个主构造函数和多个次构造函数可以没有次构造函数。主构造函数在类名后。

//常规用法
class Person(name: String) {
}

当主构造函数有注解或者可见性修饰符,需加 constructor 关键字。

class Personpublic public @Inject constructor(name: String){
}

1、主构造函数

主构造函数不能包含任何的代码。初始化的代码可以放到以 init 关键字作为前缀的初始化块中:

1、当在主函数中声明后可以当做全局变量使用
这里写图片描述

注:
1、函数的声明可以是val也可以是var
2、当不在主构造函数中声明又想当全局变量使用,可在类中声明,主函数中声明是简化了其写法。

class Test(name: String){
    val name = name
    //。。。
}

2、当不在主函数中声明时,只能在初始化块以及属性声明中使用
这里写图片描述


2、次构造函数

1、次构造函数不能有声明 val 或 var
2、如果类有一个主构造函数(无论有无参数),每个次构造函数需要直接或间接委托给主构造函数,用this关键字

class Person {

    constructor() {

    }

    constructor(name: String):this() {

    }

    constructor(name: String, age: Int) : this(name) {

    }
}
class Customer(){

    constructor(name: String):this() {

    }

    constructor(name: String, age: Int) : this(name) {

    }

}

3、当没有主构造参数时,创建次构造函数
正确使用:

class Customer{

    constructor(name: String) {

    }

    constructor(name: String, age: Int) : this(name) {

    }

}

错误使用:

class Customer{
    //没有主构造函数,使用委托this()错误
    constructor(name: String) : this() {

    }

    constructor(name: String, age: Int) : this(name) {

    }

}

3、构造函数的使用

两种构造函数结果相同,调用时都可直接调用,或传递一个参数或两个参数进行调用

class Test{
    init{
        test()
        test2()
    }
    fun test(){
        Person()
        Person("李四")
        Person("李四",18)
    }
    fun test2(){
        Customer()
        Customer("李四")
        Customer("李四",18)
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值