Kotlin类的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin类的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )相关的知识,希望对你有一定的参考价值。

文章目录





一、主构造函数定义临时变量



在 Kotlin 类中 , 可以在 类声明 时 在 类名后 定义 " 主构造函数 " ;

在 主构造函数 中 , 可以 定义 成员属性 , 并为 成员属性 提供 初始值 ;

在 主构造函数 中 , 可以定义 临时变量 , 临时变量 一般使用 以下划线为开头 的名称 ;


代码示例 :

class Hello(
    // 主构造函数,
    // 下面的两个参数仅仅用于给成员属性赋值, 只使用一次
    // 这种变量称为临时变量, 使用下划线开头
    _name: String,
    _age: Int
)
    var name = _name
    var age = _age


fun main() 
    var hello = Hello("Tom", 18)
    println(hello.name + " , " + hello.age)

执行结果 :

Tom , 18




二、主构造函数中定义成员属性



在主构造函数中 定义临时变量 , 格式为 :

class 类名(_临时变量名: 临时变量类型)

在主构造函数中也可以 定义成员属性 , 格式为 :

class 类名(var 成员属性名: 成员属性类型)

代码示例 :

class Hello(
    // 主构造函数, 直接在主构造函数中定义属性
    var name: String,
    var age: Int
)

fun main() 
    var hello = Hello("Tom", 18)
    println(hello.name + " , " + hello.age)

执行结果 :

Tom , 18




三、次构造函数



Kotlin 类只允许 在定义类时 定义 一个主构造函数 , 在其中可以定义 临时变量 , 也可以定义 属性变量 ;

次构造函数 定义在 Kotlin 内部 , 可以定义 多个 次构造函数 , 每个次构造函数都可以有不同的参数组合 ;


定义次构造函数后 , 必须调用主构造函数 , 并且为每个主构造函数 的 参数设置 参数值 ;

次构造函数中可以实现代码逻辑 , 作为主构造函数的补充 ;


代码示例 : 下面代码中 , 次构造函数 必须 调用主构造函数 , 如 name 和 age 参数必须设置默认值 name = "Jerry", age = 12 ;

class Hello(
    // 主构造函数, 直接在主构造函数中定义属性
    var name: String,
    var age: Int,
    // 定义临时变量
    _isStudent: Boolean
)
    var isStudent = _isStudent

    // 次构造函数
    constructor(isStudent: Boolean): this(name = "Jerry", age = 12, isStudent)
        // 代码逻辑
        println("次构造函数 : name = $name, age = $age, isStudent = $isStudent")
    


fun main() 
    var hello = Hello("Tom", 18, true)
    println(hello.name + " , " + hello.age)

    var hello2 = Hello(false)
    println(hello2.name + " , " + hello2.age)

执行结果 :

Tom , 18
name = Jerry, age = 12, isStudent = false
Jerry , 12




四、构造函数默认参数



在定义 构造函数 时 , 可以为 构造函数 的参数 指定 默认值 , 如果 用户传入了 值参 则 使用用户传入的值 , 如果用户没有传入值 则 使用该 默认值 ;

如果 构造函数 参数有 指定默认值 , 可以不为其传递 值参 , 构造函数中跳过该参数 , 其 后面的参数需要使用 参数名 = 参数值 进行赋值 ;


代码示例 :

class Hello(
    // 主构造函数, 直接在主构造函数中定义属性
    var name: String,
    var age: Int = 18,
    var isStudent: Boolean
)

fun main() 
    // 如果不传入 age 参数, 则 age 后的参数需要写明参数名称
    var hello = Hello("Tom", isStudent = true)
    println(hello.name + " , " + hello.age + " , " + hello.isStudent)

执行结果 :

Tom , 18 , true

以上是关于Kotlin类的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin类的初始化 ③ ( init 初始化块 | 初始化顺序 : 主构造函数属性赋值 -> 类属性赋值 -> init 初始化块代码 -> 次构造函数代码 )

Kotlin类的初始化 ③ ( init 初始化块 | 初始化顺序 : 主构造函数属性赋值 -> 类属性赋值 -> init 初始化块代码 -> 次构造函数代码 )

Kotlin类与继承

为什么Kotlin有两种类型的构造函数?

从零开始学Kotlin-枚举

Kotlin 主构造函数 次构造函数 默认参数 init代码块 初始化顺序