Kotlin屬性有哪些特點(diǎn)

小樊
81
2024-11-03 06:16:45
欄目: 編程語言

Kotlin 屬性具有以下特點(diǎn):

  1. 只讀屬性:使用 val 關(guān)鍵字聲明的屬性是只讀的,這意味著一旦被初始化后,它們的值就不能被改變。

    val name: String = "Alice"
    
  2. 可變屬性:使用 var 關(guān)鍵字聲明的屬性是可變的,這意味著它們的值可以在程序運(yùn)行過程中被改變。

    var age: Int = 25
    
  3. 屬性委托:Kotlin 支持屬性委托,這意味著可以將屬性的讀取和/或設(shè)置操作委托給另一個(gè)對(duì)象。這可以通過在屬性聲明前加上 delegate 關(guān)鍵字來實(shí)現(xiàn)。

    class MyClass {
        var name: String by delegate()
    }
    
  4. 屬性訪問器:Kotlin 允許為屬性提供自定義的訪問器(getter 和 setter),以便在訪問或修改屬性時(shí)執(zhí)行額外的邏輯。

    class MyClass {
        var _name: String = ""
    
        val name: String
            get() = _name
    
        set(value) {
            _name = value.trim()
        }
    }
    
  5. 計(jì)算屬性:Kotlin 支持計(jì)算屬性,這些屬性不需要顯式聲明為 valvar。計(jì)算屬性的值是通過調(diào)用一個(gè)函數(shù)來獲取的,這個(gè)函數(shù)可以包含任何邏輯。

    class MyClass {
        val fullName: String
            get() = "${firstName} ${lastName}"
    }
    
  6. 不可變集合:Kotlin 提供了不可變集合類型,如 List、SetMap,它們的屬性(如 size)也是不可變的。要修改這些集合,需要使用可變版本(如 MutableList)。

    val names: List<String> = listOf("Alice", "Bob")
    names.size // 不可變的屬性訪問
    
  7. 擴(kuò)展屬性:Kotlin 允許為現(xiàn)有類添加新的屬性,而無需繼承該類或使用其他設(shè)計(jì)模式。這可以通過擴(kuò)展函數(shù)來實(shí)現(xiàn)。

    extension String {
        val isLong: Boolean
            get() = this.length >= 5
    }
    
    println("Alice".isLong) // true
    

0