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
valtrebuie să returneze întotdeauna o valoare de același tip. - Setters pentru proprietățile
varacceptă 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. |