I den här artikeln lär du dig att använda getters och setters i Kotlin med hjälp av ett exempel.
Innan du lär dig om getters och setter, var noga med att kolla Kotlin-klass och objekt.
Vid programmering används getters för att få värdet på fastigheten. På samma sätt används setter för att ställa in värdet på fastigheten.
I Kotlin är getters och setter valfria och genereras automatiskt om du inte skapar dem i ditt program.
Hur fungerar getters och setters?
Följande kod i Kotlin
klass Person (var namn: String = "defaultValue")
är ekvivalent med
klass Person (var namn: String = "defaultValue" // getter get () = field // setter set (value) (field = value))
När du instanserar objektet i Person
klassen och initierar namnegenskapen skickas det till parametervärdet setters och sätter fältet till värde.
val p = Person () p.name = "jack"
Nu när du öppnar namnegenskapen för objektet får du fält på grund av koden get() = field
.
println ("$ (sidnamn)")
Här är ett fungerande exempel:
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 ) )
När du kör programmet blir resultatet:
jack
Så här fungerar getters och setter som standard. Du kan dock ändra värdet på egenskapen (ändra värde) med hjälp av getters och setter.
Exempel: Ändring av fastighetens värde
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 )
När du kör programmet blir resultatet:
Maria: faktisk ålder = 15 Maria: låtsas ålder = 18 Angela: faktisk ålder = 35 Angela: låtsas ålder = 32
Här fungerar egenskapen actualAge som förväntat.
Det finns dock ytterligare logik är setter för att ändra värdet på åldersegenskapen.