Bu makalede, bir örnek yardımıyla Kotlin'de alıcı ve ayarlayıcıları kullanmayı öğreneceksiniz.
Alıcılar ve ayarlayıcı hakkında bilgi edinmeden önce Kotlin sınıfını ve nesnelerini kontrol ettiğinizden emin olun.
Programlamada alıcılar mülkün değerini elde etmek için kullanılır. Benzer şekilde, mülkün değerini ayarlamak için ayarlayıcılar kullanılır.
Kotlin'de alıcılar ve ayarlayıcılar isteğe bağlıdır ve bunları programınızda oluşturmazsanız otomatik olarak oluşturulur.
Alıcılar ve ayarlayıcılar nasıl çalışır?
Kotlin'de aşağıdaki kod
sınıf Kişi (var adı: String = "defaultValue")
eşdeğerdir
sınıf Kişi (var adı: String = "defaultValue" // getter get () = alan // ayarlayıcı kümesi (değer) (alan = değer))
Person
Sınıfın nesnesini başlattığınızda ve name özelliğini başlattığınızda, bu, ayarlayıcılar parametre değerine iletilir ve alanı değer olarak ayarlar.
val p = Kişi () p.name = "jack"
Şimdi, nesnenin name özelliğine eriştiğinizde, kod nedeniyle alan elde edeceksiniz get() = field
.
println ("$ (s.adı)")
İşte çalışan bir örnek:
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 ) )
Programı çalıştırdığınızda, çıktı:
kriko
Alıcıların ve ayarlayıcıların varsayılan olarak çalışma şekli budur. Ancak, alıcıları ve ayarlayıcıları kullanarak özelliğin değerini değiştirebilirsiniz (değeri değiştirin).
Örnek: Özelliğin değerini değiştirme
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 )
Programı çalıştırdığınızda, çıktı:
Maria: gerçek yaş = 15 Maria: iddia edilen yaş = 18 Angela: gerçek yaş = 35 Angela: iddia edilen yaş = 32
Burada, actualAge özelliği beklendiği gibi çalışır.
Bununla birlikte, age özelliğinin değerini değiştirmek için ek bir mantık vardır.