English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本文中,您将借助一个示例学习在 Kotlin 中使用 getter 和 setter。
在学习 getter 和 setter 之前,您最好已经了解了Kotlin 类和对象。
在编程中,getter 用于获取属性的值。同样,setter 用来设置属性的值。
在 Kotlin 中,getter 和 setter 是可选的,如果未在程序中创建它们,它们将自动生成。
Kotlin中的以下代码
class Person { var name: String = "defaultValue" }
等同于
class Person { var name: String = "defaultValue" // getter get() = field // setter set(value) { field = value } }
实例化 Person 类的对象并初始化 name 属性时,它将传递给 setters 参数值并将 field 设置为 value。
val p = Person() p.name = "jack"
现在,当您访问对象的 name 属性时,由于代码 get()=field,您将获得 field
println("${p.name}")
这是一个工作示例:
fun main(args: Array<String>) { val p = Person() p.name = "jack" println("${p.name}") } class Person { var name: String = "defaultValue" get() = field set(value) { field = value } }
Al ejecutar el programa, la salida será:
jack
默认情况下,这就是 getter 和 setter 的工作方式。但是,您可以使用 getter 和 setter 来更改属性的值(修改值)。
fun main(args: Array<String>) { val maria = Girl() maria.actualAge = 15 maria.age = 15 println("玛莉亚: 实际年龄 = ${maria.actualAge}") println("玛莉亚: 虚拟年龄 = ${maria.age}") val angela = Girl() angela.actualAge = 35 angela.age = 35 println("安戈洛: 实际年龄 = ${angela.actualAge}") println("安戈洛: 虚拟年龄 = ${angela.age}") } class Girl { var age: Int = 0 get() = field set(value) { field = if (value < 18) 18 else if (value >= 18 && value <= 30) value else value-3 } var actualAge: Int = 0 }
Al ejecutar el programa, la salida será:
玛莉亚: Edad real = 15 玛莉亚: Edad virtual = 18 安戈洛: Edad real = 35 安戈洛: Edad virtual = 32
Aquí, la propiedad ActialAge funciona como se espera.
Sin embargo, hay otros lógicos que pueden modificar el valor de la propiedad age mediante el setter del programa.