Kotlin学习笔记-属性与字段详解

目录

一、Getter()与Setter()

二、自定义

三、用var修饰的属性自定义情况

四、输出结果为


一、Getter()与Setter()

class Test{
    
    /*
     * getter 和 setter是可选的
     */
    
    // 当用var修饰时,必须为属性赋默认值(特指基本数据类型,因为自定义的类型可以使用后期初始化属性) 即使在用getter()的情况下,不过这样写出来,不管我们怎么去改变其值,其值都为`123`
    var test1 : String = ""
        get() = "123"
        set(value){field = value}
    
    // 用val修饰时,用getter()函数时,属性可以不赋默认值。但是不能有setter()函数。
    val test2 : String  
        get() = "123"       // 等价于:val test2 : String = "123"
}

在上面的代码中出现了set(value){field = value}这样的一句代码。其中value是Koltin写setter()函数时其参数的约定俗成的习惯。你也可以换成其他的值。而field是指属性本身。

二、自定义

例1:用val修饰的属性自定义情况

class Mime{
    // size属性
    private val size = 0    
    
    // 即isEmpty这个属性,是判断该类的size属性是否等于0
    val isEmpty : Boolean
        get() = this.size == 0

    // 另一个例子
    val num = 2
        get() = if (field > 5) 10 else 0
}

// 测试
fun main(args: Array<String>) {
    val mime = Mime()
    println("isEmpty = ${mime.isEmpty}")
    println("num = ${mime.num}")
}
//输出结果为:
isEmpty = true
num = 0

三、用var修饰的属性自定义情况

class Mime{

    var str1 = "test"
        get() = field   // 这句可以省略,kotlin默认实现的方式
        set(value){
            field = if (value.isNotEmpty()) value else "null"
        }

    var str2 = ""
        get() = "随意怎么修改都不会改变"
        set(value){
            field = if (value.isNotEmpty()) value else "null"
        }
}

// 测试
fun main(args: Array<String>) {
    val mime = Mime()
    
    println("str = ${mime.str1}")
    mime.str1 = ""
    println("str = ${mime.str1}")
    mime.str1 = "kotlin"
    println("str = ${mime.str1}")

    println("str = ${mime.str2}")
    mime.str2 = ""
    println("str = ${mime.str2}")
    mime.str2 = "kotlin"
    println("str = ${mime.str2}")
} 

四、输出结果为

str = test
str = null
str = kotlin
str = 随意怎么修改都不会改变
str = 随意怎么修改都不会改变
str = 随意怎么修改都不会改变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄毛火烧雪下

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

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

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

打赏作者

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

抵扣说明:

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

余额充值