Kotlin学习历程五:kotlin中的类的使用

本文围绕Kotlin类展开,介绍了类的声明,关键字为class,无结构体时大括号可省略。阐述了构造函数,包括主构造函数和辅助构造函数,说明了其声明、初始化代码块等内容。还提及类的实例化,调用构造函数即可,无需new关键字,此外介绍了类的组成和类别。

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

一、类的声明

关键字

声明类的关键字为class

声明格式

class Test{
    // 属性...
    ...
    // 构造函数
    ...
    // 函数
    ...
    // 内部类
    ...
    ...
}

当类没有结构体的时候,大括号可以省略。即:

class Test

 

二、类的构造函数

在Kotlin中,允许有一个主构造函数和多个二级构造函数(辅助构造函数)。其中主构造函数是类头的一部分。

关键字或者构造函数名:constructor(参数)

1.主构造函数

主构造函数是类头的一部分,类名的后面跟上构造函数的关键字以及类型参数。

1.1构造函数中的初始化代码块

构造函数中不能出现其他的代码,只能包含初始化代码。包含在初始化代码块中。

关键字:init{...}

值得注意的是,init{...}中能使用构造函数中的参数

1.2声明属性的简便方法

即 在主构造函数中声明

class Test(val num1 : Int, var num2 : Long, val str : String){

...

}

1.3 constructor可以省略的情况

在构造函数不具有注释符或者默认的可见性修饰符时,constructor关键字可以省略。

默认的可见性修饰符时public。可以省略不写。

 

2.辅助(二级)构造函数

Kotlin中支持二级构造函数。它们以constructor关键字作为前缀。

2.1声明

格式:

class Test{
    constructor(参数列表){
    
    }
}

2.2同时存在主构造函数和二级构造函数时的情况

如果类具有主构造函数,则每个辅助构造函数需要通过另一个辅助构造函数直接或间接地委派给主构造函数。 使用this关键字对同一类的另一个构造函数进行委派:

fun main(args: Array<String>) {
    var test1 = Test(1)
    var test2 = Test(1,2)
}

// 这里是为了代码清晰,故而没有隐藏constructor关键字
class Test constructor(num: Int){

    init {
        println("num = $num")
    }

    constructor(num : Int, num2: Int) : this(num) {
        println(num + num2)
    }
}

说明:二级构造函数中的参数1(num),是委托了主构造函数的参数num。

可以看出,当实例化类的时候只传1个参数的时候,只会执行init代码块中的代码。当传2个参数的时候,除了执行了init代码块中代码外,还执行了二级构造函数中的代码。

输出结果为:

num = 1
num = 1
3

2.3当主构造函数都存在默认值的情况

在JVM上,如果类主构造函数的所有参数都具有默认值,编译器将生成一个额外的无参数构造函数,它将使用默认值。 这使得更容易使用Kotlin与诸如Jackson或JPA的库,通过无参数构造函数创建类实例。

同理可看出,当类存在主构造函数并且有默认值时,二级构造函数也适用。

fun main(args: Array<String>) {
    var test = Test()
    var test1 = Test(1,2)
    var test2 = Test(4,5,6)
}

class Test constructor(num1: Int = 10 , num2: Int = 20){

    init {
        println("num1 = $num1\t num2 = $num2")
    }

    constructor(num1 : Int = 1, num2 : Int = 2, num3 : Int = 3) : this(num1 , num2){
        println("num1 = $num1\t num2 = $num2 \t num3 = $num3")
    }
}

输出结果为:
num1 = 10    num2 = 20
num1 = 1     num2 = 2
num1 = 4     num2 = 5
num1 = 4     num2 = 5    num3 = 6

说明: 当实例化无参的构造函数时。使用了参数的默认值。

 

三、类的实例化

创建一个类的实例,需要调用类的构造函数,就像它是一个常规函数一样例:

var test = Test()

var test1 = Test(1,2)

其实在上面的例子中就实例化类的运用。

注意:这里和Java不同的点是,没有new这个关键字

四、类的组成

类的构成由构造函数和初始化代码块属性(字段)函数(方法)内部类(嵌套类)对象声明五部分组成

详细的看下一章节

五、类的类别

Kotlin中的类可详细的分为:密封类、内部类(嵌套类)、抽象类、枚举类、接口类和数据类

详细的看下一章节

六、类的继承

后续完善

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ʚʕ̯•͡˔•̯᷅ʔɞ LeeKuma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值