Sobes.tech
Junior

Шумо дар бораи хусусиятҳо ва инчунин методҳои get ва set дар Kotlin чӣ мегӯед?

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin, хусусиятҳо якҷоягии майдон ва геттери ва сеттери мувофиқро намояндагӣ мекунанд.

Таърифи хусусият:

class MyClass {
    var mutableProperty: String = "default"
    val immutableProperty: Int = 10
}

Ин ҷо mutableProperty хусусияти тағйирёбанда бо геттери ва сеттери худкор мебошад. immutableProperty хусусияти тағйирнопазир бо геттери худкор мебошад.

Таърифи равшан кардани геттер ва сеттер:

class MyClass {
    var customProperty: String = ""
        get() = field.toUpperCase() // Геттери муштарӣ
        set(value) {
            field = value.toLowerCase() // Сеттери муштарӣ
        }

    val computedProperty: Int
        get() = (1..10).random() // Хусусияти ҳисобшаванда, майдон надорад
}
  • field - истинод ба майдони хусусият дар дохили геттер ва сеттер. Он танҳо барои хусусиятҳои тағйирёбанда (var) истифода мешавад.
  • Геттерҳо ва сеттерҳо метавонанд фармоишӣ бошанд, иҷрои логикаи иловагӣ ҳангоми дастрасӣ ё тағир додани хусусият.
  • Хусусиятҳои ҳисобшаванда (computedProperty) майдон надошта ва ҳамеша арзишро ҳангоми дастрасӣ ҳисоб мекунанд.

Мавзӯъҳои асосӣ:

  • Дар Kotlin, зарур нест, ки геттер ва сеттер барои ҳар як майдон explicitly сохта шаванд, чун дар Java. Онҳо автоматӣ тавлид мешаванд.
  • Хусусиятҳо тавассути нотацияи нуқтаӣ (instance.propertyName) дастрас мешаванд.
  • Таърифи равшан кардани геттер ва сеттер имкон медиҳад, ки логикаи иловагӣ ҳангоми дастрасӣ ё тағир додани хусусият илова карда шавад.
  • Геттерҳо барои val бояд ҳамеша арзиши ҳамон навъро баргардонанд.
  • Сеттерҳо барои var навъи ҳамонро қабул мекунанд.

Мувофиқсозии хусусиятҳо дар Kotlin ва майдонҳо + методҳо дар Java:

Хусусияти Kotlin Майдони Java + Методҳо Тавсиф
var myProperty: Type private Type myProperty; + public Type getMyProperty() + public void setMyProperty(Type value) Хусусияти тағйирёбанда бо геттер ва сеттери худкор.
val myProperty: Type private Type myProperty; + public Type getMyProperty() Хусусияти тағйирнопазир танҳо бо геттер худкор.
Геттер/сеттери фармоишӣ Навиштани логикаи худкор Илова кардани логикаи муштарӣ ҳангоми дастрасӣ ё тағир додан.
Ҳусусияти ҳисобшаванда Методи ошкор, ки арзишро бармегардонад Арзиши хусусият дар ҳар дафъа ҳисоб карда мешавад.