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
二,测试效果:

浙公网安备 33010602011771号