Sobes.tech
Junior

Ce poți spune despre proprietăți și, de asemenea, despre metodele get și set în Kotlin?

sobes.tech AI

Răspuns de la AI

În Kotlin, proprietățile reprezintă o combinație între un câmp și getter-ul și setter-ul corespunzător.

Definirea unei proprietăți:

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

Aici, mutableProperty este o proprietate modificabilă cu getter și setter implicite. immutableProperty este o proprietate imuabilă doar cu getter implicit.

Definirea explicită a getter-ului și setter-ului:

class MyClass {
    var customProperty: String = ""
        get() = field.toUpperCase() // Getter personalizat
        set(value) {
            field = value.toLowerCase() // Setter personalizat
        }

    val computedProperty: Int
        get() = (1..10).random() // Proprietate calculată, nu are câmp
}
  • field - referință la câmpul proprietății în interiorul getter-ului și setter-ului. Folosit doar pentru proprietățile modificabile (var).
  • Getters și setters pot fi personalizate pentru a executa logică suplimentară la acces sau modificare.
  • Proprietățile calculate (computedProperty) nu au un câmp propriu și calculează valoarea la fiecare acces.

Puncte cheie:

  • În Kotlin, nu este necesar să creezi explicit getters și setters pentru fiecare câmp, deoarece sunt generate automat.
  • Proprietățile sunt accesibile prin notația punct (instanță.numeProprietate).
  • Definirea explicită a getter-ului și setter-ului permite adăugarea de logică la acces sau modificare.
  • Getters pentru proprietățile val trebuie să returneze întotdeauna o valoare de același tip.
  • Setters pentru proprietățile var acceptă un parametru de același tip.

Compararea proprietăților în Kotlin și a câmpurilor+metodelor în Java:

Proprietate Kotlin Câmp + Metode în Java Descriere
var proprietateMea: Tip private Tip proprietateMea; + public Tip getProprietateMea() + public void setProprietateMea(Tip valoare) Proprietate modificabilă cu getter și setter automate.
val proprietateMea: Tip private Tip proprietateMea; + public Tip getProprietateMea() Proprietate imuabilă doar cu getter automat.
Getter/setter personalizat Scriere explicită a logicii Adăugarea de logică personalizată la acces sau modificare.
Proprietate calculată Metodă explicită care returnează valoarea Valoarea proprietății este calculată la fiecare solicitare.