Kotlin 屬性具有以下特點:
只讀屬性:使用 val
關鍵字聲明的屬性是只讀的,這意味著一旦被初始化后,它們的值就不能被改變。
val name: String = "Alice"
可變屬性:使用 var
關鍵字聲明的屬性是可變的,這意味著它們的值可以在程序運行過程中被改變。
var age: Int = 25
屬性委托:Kotlin 支持屬性委托,這意味著可以將屬性的讀取和/或設置操作委托給另一個對象。這可以通過在屬性聲明前加上 delegate
關鍵字來實現。
class MyClass {
var name: String by delegate()
}
屬性訪問器:Kotlin 允許為屬性提供自定義的訪問器(getter 和 setter),以便在訪問或修改屬性時執行額外的邏輯。
class MyClass {
var _name: String = ""
val name: String
get() = _name
set(value) {
_name = value.trim()
}
}
計算屬性:Kotlin 支持計算屬性,這些屬性不需要顯式聲明為 val
或 var
。計算屬性的值是通過調用一個函數來獲取的,這個函數可以包含任何邏輯。
class MyClass {
val fullName: String
get() = "${firstName} ${lastName}"
}
不可變集合:Kotlin 提供了不可變集合類型,如 List
、Set
和 Map
,它們的屬性(如 size
)也是不可變的。要修改這些集合,需要使用可變版本(如 MutableList
)。
val names: List<String> = listOf("Alice", "Bob")
names.size // 不可變的屬性訪問
擴展屬性:Kotlin 允許為現有類添加新的屬性,而無需繼承該類或使用其他設計模式。這可以通過擴展函數來實現。
extension String {
val isLong: Boolean
get() = this.length >= 5
}
println("Alice".isLong) // true