W tym artykule nauczysz się korzystać z metod pobierających i ustawiających w Kotlinie na przykładzie.
Zanim poznasz metody pobierające i ustawiające, koniecznie sprawdź klasę i obiekty Kotlin.
W programowaniu metody pobierające służą do pobierania wartości właściwości. Podobnie metody ustawiające są używane do ustawiania wartości właściwości.
W Kotlinie metody pobierające i ustawiające są opcjonalne i są generowane automatycznie, jeśli nie utworzysz ich w swoim programie.
Jak działają metody pobierające i ustawiające?
Poniższy kod w Kotlin
klasa Osoba (nazwa zmiennej: String = "defaultValue")
jest równa
class Osoba (nazwa zmiennej: String = "defaultValue" // getter get () = pole // setter set (wartość) (pole = wartość))
Podczas tworzenia wystąpienia obiektu Person
klasy i inicjalizacji właściwości name jest ona przekazywana do wartości parametru ustawiającego i ustawia pole na wartość.
val p = Person () p.name = "jack"
Teraz, gdy uzyskasz dostęp do właściwości name obiektu, otrzymasz pole z powodu kodu get() = field
.
println ("$ (p.name)")
Oto działający przykład:
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 ) )
Po uruchomieniu programu wynik będzie następujący:
Jacek
W ten sposób domyślnie działają metody pobierające i ustawiające. Możesz jednak zmienić wartość właściwości (zmodyfikować wartość) za pomocą metod pobierających i ustawiających.
Przykład: zmiana wartości właściwości
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 )
Po uruchomieniu programu wynik będzie następujący:
Maria: rzeczywisty wiek = 15 Maria: udawany wiek = 18 Angela: rzeczywisty wiek = 35 Angela: udawany wiek = 32
W tym przypadku właściwość currentAge działa zgodnie z oczekiwaniami.
Istnieje jednak dodatkowa logika służąca do modyfikowania wartości właściwości age.