Neste artigo, você aprenderá a usar getters e setters em Kotlin com a ajuda de um exemplo.
Antes de aprender sobre getters e setter, certifique-se de verificar a classe e os objetos Kotlin.
Na programação, os getters são usados para obter o valor da propriedade. Da mesma forma, setters são usados para definir o valor da propriedade.
No Kotlin, getters e setters são opcionais e são gerados automaticamente se você não os criar em seu programa.
Como getters e setters funcionam?
O seguinte código em Kotlin
classe Person (var name: String = "defaultValue")
é equivalente a
class Person (var name: String = "defaultValue" // getter get () = field // setter set (value) (field = value))
Quando você instancia o objeto da Person
classe e inicializa a propriedade name, ela é passada para o valor do parâmetro setters e define o campo como valor.
val p = Person () p.name = "jack"
Agora, quando você acessar a propriedade name do objeto, obterá o campo por causa do código get() = field
.
println ("$ (p.name)")
Aqui está um exemplo prático:
fun main(args: Array) ( val p = Person() p.name = "jack" println("$(p.name)") ) class Person ( var name: String = "defaultValue" get() = field set(value) ( field = value ) )
Quando você executa o programa, a saída será:
macaco
É assim que getters e setters funcionam por padrão. No entanto, você pode alterar o valor da propriedade (modificar o valor) usando getters e setters.
Exemplo: Alteração do valor da propriedade
fun main(args: Array) ( 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 && value <= 30) value else value-3 ) var actualAge: Int = 0 )
Quando você executa o programa, a saída será:
Maria: idade real = 15 Maria: idade fingida = 18 Ângela: idade real = 35 Ângela: idade fingida = 32
Aqui, a propriedade actualAge funciona conforme o esperado.
No entanto, há uma lógica adicional configurada para modificar o valor da propriedade age.