Junior
Co możesz powiedzieć o właściwościach oraz metodach get i set w Kotlin?
sobes.tech AI
Odpowiedź od AI
W Kotlinie właściwości są połączeniem pola i odpowiadającego mu getter i setter.
Definicja właściwości:
class MyClass {
var mutableProperty: String = "default"
val immutableProperty: Int = 10
}
Tutaj mutableProperty jest właściwością zmienną z domyślnym getterem i setterem. immutableProperty jest właściwością niezmienną tylko z domyślnym getterem.
Jawne definiowanie getterów i setterów:
class MyClass {
var customProperty: String = ""
get() = field.toUpperCase() // Niestandardowy getter
set(value) {
field = value.toLowerCase() // Niestandardowy setter
}
val computedProperty: Int
get() = (1..10).random() // Właściwość obliczana, nie ma pola
}
field- odwołanie do pola właściwości wewnątrz getter i setter. Używane tylko dla właściwości zmiennych (var).- Gettery i settery mogą być dostosowane, wykonując dodatkową logikę podczas dostępu lub zmiany właściwości.
- Właściwości obliczane (
computedProperty) nie mają własnego pola i zawsze obliczają wartość przy dostępie.
Kluczowe punkty:
- W Kotlinie nie ma potrzeby jawnego tworzenia getterów i setterów dla każdego pola, są one generowane automatycznie.
- Właściwości są dostępne przez notację kropkową (
instancja.nazwaWłaściwości). - Jawne definiowanie getterów i setterów pozwala dodać logikę przy dostępie lub zmianie właściwości.
- Gettery dla
valzawsze muszą zwracać wartość tego samego typu. - Settery dla
varprzyjmują parametr tego samego typu.
Porównanie właściwości w Kotlinie i pól+metod w Javie:
| Właściwość w Kotlinie | Pole + Metody w Javie | Opis |
|---|---|---|
var mojaWłaściwość: Typ |
private Typ mojaWłaściwość; + public Typ getMojaWłaściwość() + public void setMojaWłaściwość(Typ wartość) |
Właściwość zmienna z automatycznym getterem i setterem. |
val mojaWłaściwość: Typ |
private Typ mojaWłaściwość; + public Typ getMojaWłaściwość() |
Właściwość niezmienna z automatycznym getterem. |
| Niestandardowy getter/setter | Jawne pisanie logiki | Dodanie własnej logiki przy dostępie lub zmianie. |
| Właściwość obliczana | Jawna metoda zwracająca wartość | Wartość właściwości jest obliczana przy każdym odwołaniu. |