kotlin: getter和setter

一,代码例子:

package com.example.okdemo1.activity

import android.os.Bundle
import android.widget.Button
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import com.example.okdemo1.R

class Bottom2Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        this.enableEdgeToEdge()
        setContentView(R.layout.activity_bottom2)

        val button1: Button = findViewById(R.id.button1)
        button1.setOnClickListener {
            // 在这里处理点击事件
            val p = Person()
            println("name:"+p.name)
            p.name="王富贵"
            println("name:"+p.name)

            println("age:${p.age}") // age -1
            p.age = 22
            println("age:${p.age}") // age -1

            println("性别: ${p.sex}") // 默认
            p.sex = "男"
            println("性别: ${p.sex}") // 男
            p.sex = "公公"
            println("性别: ${p.sex}") // 未知

        }
    }
}

class Person {
    var name: String = "汤姆"
    var age:Int = 0
        get() = -1    //age的get方法默认返回-1
    var sex: String = "默认"
        get(){
            println("调用get()")
            return field
        }
        set(value){
            if (value != "男" && value != "女"){
                field = "未知"
            } else {
                field = value
            }
        }
}

说明:访问name时,使用了默认的getter和setter
         读age时,重写了get方法
         访问sex时,则重写了get和set方法

说明: Kotlin 会为 类中的每个 成员属性 生成一个 field , getter , setter ;
        field 用于存储 属性数据 , 是由 Kotlin 自动进行定义封装的 ,
        只有在 getter 和 setter 函数中才能调用 field

二,测试效果:

posted @ 2025-06-22 12:50  刘宏缔的架构森林  阅读(45)  评论(0)    收藏  举报