Junior
Kotlin'de özellikler ve ayrıca get ve set metodleri hakkında ne anlatabilirsin?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'de özellikler, alan ve ona karşılık gelen getter ve setter kombinasyonudur.
Özellik tanımı:
class MyClass {
var mutableProperty: String = "default"
val immutableProperty: Int = 10
}
Burada, mutableProperty varsayılan getter ve setter ile değiştirilebilir bir özelliktir. immutableProperty ise sadece varsayılan getter ile değiştirilemez bir özelliktir.
Açıkça getter ve setter tanımı:
class MyClass {
var customProperty: String = ""
get() = field.toUpperCase() // Kullanıcı tanımlı getter
set(value) {
field = value.toLowerCase() // Kullanıcı tanımlı setter
}
val computedProperty: Int
get() = (1..10).random() // Hesaplanan özellik, alanı yok
}
field- getter ve setter içinde özellik alanına referans. Sadece değiştirilebilir özellikler (var) için kullanılır.- Getter ve setterlar, erişim veya özellik değiştirme sırasında ek mantık eklemek için özelleştirilebilir.
- Hesaplanan özellikler (
computedProperty) kendi alanına sahip değildir ve her erişimde değeri hesaplanır.
Ana noktalar:
- Kotlin'de, her alan için açıkça getter ve setter oluşturmak gerekmez; otomatik olarak oluşturulurlar.
- Özellikler nokta notasyonu (
instance.propertyName) ile erişilir. - Açıkça tanımlanmış getter ve setter, erişim veya değiştirme sırasında mantık eklemeye olanak tanır.
valözelliklerin getter'ları her zaman aynı türde değer döndürmelidir.varözelliklerin setter'ları aynı türde parametre alır.
Kotlin özellikleri ile Java'daki alanlar + metodların karşılaştırması:
| Kotlin Özelliği | Java Alan + Metodlar | Açıklama |
|---|---|---|
var myProperty: Type |
private Type myProperty; + public Type getMyProperty() + public void setMyProperty(Type value) |
Değiştirilebilir özellik, otomatik getter ve setter ile. |
val myProperty: Type |
private Type myProperty; + public Type getMyProperty() |
Değiştirilemez özellik, sadece otomatik getter ile. |
| Özel getter/setter | Özel mantık yazımı | Erişim veya değiştirme sırasında kullanıcı tanımlı mantık eklenir. |
| Hesaplanan özellik | Değer döndüren açık metod | Özelliğin değeri her erişimde hesaplanır. |