English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste artigo, você aprenderá a usar getter e setter em Kotlin com um exemplo.
Antes de aprender sobre getter e setter, é melhor que você já saibaClasses e objetos em Kotlin.
No programação, getter é usado para obter o valor de uma propriedade. Da mesma forma, setter é usado para definir o valor de uma propriedade.
Em Kotlin, getter e setter são opcionais, se não forem criados no programa, eles serão gerados automaticamente.
O seguinte código em Kotlin
class Person { var name: String = "defaultValue" }
equivalente a
class Person { var name: String = "defaultValue" // getter get() = field // setter set(value) { field = value } }
Ao instanciar um objeto da classe Person e inicializar a propriedade name, ele passa o valor do parâmetro ao setter e configura field como value.
val p = Person() p.name = "jack"
Agora, quando você acessar a propriedade name do objeto, devido ao código get() = field, você obterá field
println("${p.name}")
Este é um exemplo de trabalho:
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 } }
Quando o programa é executado, a saída é:
jack
Por padrão, é assim que o getter e setter funcionam. Mas, você pode usar getter e setter para alterar o valor de uma propriedade (modificar o valor).
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 }
Quando o programa é executado, a saída é:
Maria: Idade Real = 15 Maria: Idade Virtual = 18 Angolo: Idade Real = 35 Angolo: Idade Virtual = 32
Aqui, a propriedade ActialAge funciona conforme esperado.
Mas, há outros lógicas que podem modificar o valor da propriedade age ao configurar o setter do programa.