Sobes.tech
Junior

Kotlin'da inkapsulyatsiya qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

Kotlin'da inkapsulasyon, erişim modifikatorlari va xususiyatlar yordamida amalga oshiriladi.

Erişim modifikatorlari:

  • public: har joydan kirish mumkin (standart).
  • internal: shuningdek, bir modul ichida kirish mumkin.
  • protected: o'z sinfida va uning vorislarida kirish mumkin.
  • private: faqat ta'riflangan sinf ichida kirish mumkin.

Xususiyatlar sinf ma'lumotlariga kirishni boshqarish uchun ishlatiladi. Ular o'qish va yozish uchun getter va setterga ega bo'lishi mumkin, ularni yozish yoki o'qishda logika qo'shish uchun qayta yozish mumkin.

class Person {
    // Maxfiy maydon, faqat sinf ichida kirish mumkin
    private var _name: String = ""

    // Jamoatchilik getter va maxfiy setter bilan xususiyat
    var name: String
        get() = _name
        private set(value) {
            _name = value
        }

    // Ismni o'rnatish uchun jamoatchilik funktsiya, kirishni nazorat qiladi
    fun setName(newName: String) {
        if (newName.isNotBlank()) {
            name = newName
        } else {
            println("Ism bo'sh bo'lishi mumkin emas")
        }
    }
}

fun main() {
    val person = Person()
    person.setName("Alice") // Nazorat qiluvchi metod yordamida o'zgartirish
    println(person.name)    // Getter orqali qiymatni o'qish
    // person.name = "Bob"   // Kompilyatsiya xatosi, setter maxfiy
}