🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Kotlin 获取器和设置器 > 原文: [https://www.programiz.com/kotlin-programming/getters-setters](https://www.programiz.com/kotlin-programming/getters-setters) #### 在本文中,您将借助于一个示例学习在 Kotlin 中使用获取器和设置器。 在学习获取器和设置器之前,请务必检查 [Kotlin 类和对象](/kotlin-programming/class-objects)。 在编程中,获取器用于获取属性的值。 同样,使用设置器来设置属性的值。 在 Kotlin 中,获取器和设置器是可选的,如果未在程序中创建它们,它们将自动生成。 * * * ## 获取器和设置器如何工作? Kotlin 中的以下代码 ```kt class Person { var name: String = "defaultValue" } ``` 相当于 ```kt class Person { var name: String = "defaultValue" // getter get() = field // setter set(value) { field = value } } ``` 实例化`Person`类的对象并初始化`name`属性时,它将传递给设置器参数`value`并将`field`设置为`value`。 ```kt val p = Person() p.name = "jack" ``` 现在,当您访问对象的`name`属性时,由于代码`get() = field`,您将获得`field`。 ```kt println("${p.name}") ``` 这是一个工作示例: ```kt 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 } } ``` 运行该程序时,输出为: ```kt jack ``` 默认情况下,这就是获取器和设置器的工作方式。 但是,您可以使用获取器和设置器来更改属性的值(修改值)。 * * * ### 示例:更改属性的值 ```kt fun main(args: Array<String>) { val maria = Girl() maria.actualAge = 15 maria.age = 15 println("Maria: actual age = ${maria.actualAge}") println("Maria: pretended age = ${maria.age}") val angela = Girl() angela.actualAge = 35 angela.age = 35 println("Angela: actual age = ${angela.actualAge}") println("Angela: pretended age = ${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 } ``` 运行该程序时,输出为: ```kt Maria: actual age = 15 Maria: pretended age = 18 Angela: actual age = 35 Angela: pretended age = 32 ``` 在这里,`actualAge`属性按预期方式工作。 但是,还有其他逻辑设置器可以修改`age`属性的值。