Sobes.tech
Junior

Kotlinдеги мүнөздөмөлөр жана ошондой эле get жана set ыкмалары жөнүндө эмне айта аласыз?

sobes.tech AI

AIден жооп

Котлинде мүлктөр талаа жана ага тиешелүү геттер жана сеттердин айкалышын билдирет.

Мүлктүн аныктамасы:

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де ар бир талаа үчүн геттер жана сеттер түзүү зарыл эмес, Java сыяктуу. Алар автоматтык түрдө түзүлөт.
  • Мүлктөр нотация аркылуу жеткиликтүү (instance.propertyName).
  • Ачык аныктоо геттер жана сеттер логика кошууга мүмкүндүк берет.
  • val мүлк үчүн геттер ар дайым ошол эле түрдө маанини кайтарат.
  • var мүлк үчүн сеттер ошол эле түрдөгү параметрди кабыл алат.

Кыскача салыштыруу:

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() Өзгөртүлбөс мүлк, гана геттер менен.
Колдонуучу геттер/сеттер Кол менен жазылган логика Колдонуучу логика кошуу мүмкүнчүлүгү.
Эсептелүүчү мүлк Метод, маанини кайтарат Мүлктүн мааниси ар дайым эсептелет.