從零開始的Kotlin之類和對象(二)

從零開始系列:segmentfault

屬性(Property)和域(Field)

Kotlin中聲明一個屬性能夠使用valvar關鍵字。var表示爲可變屬性,val表示爲只讀屬性。對象

class Test {
    val x = 0;
    var y = 1.0f
}

自定義的 Getter && Setter

var name: String
        get() = name
        set(value) {
            "The name is $name"
        }

編譯期常數值

若是屬性值載編譯期間就能肯定,則能夠使用const修飾符,將屬性標記爲編譯器常數值,這類屬性必須知足如下全部條件:接口

  • 必須是頂級屬性,或者是一個object的成員get

  • 值被初始化爲String類型,或基本類型編譯器

  • 不存自定義的取值方法編譯

object Test3 {
    const val TEXT: String = "Hello"
}

接口

Kotlin中的接口與Java8很是相似,接口中能夠包含抽象方法的聲明,也能夠包含方法的實現。接口與抽象類的區別在於,接口不能存儲狀態數據,接口能夠擁有屬性,但這些x屬性必須是抽象的,或者必須提供訪問器的自定義實現。class

接口使用interface關鍵字來定義:test

interface Test2 {
    fun test1()
    fun test2(str: String): String {
        return "Hello $str"
    }
}

實現接口

類或者對象能夠實現一個或多個接口:

object Test3 : Test2 {
    override fun test1() {
        print("Hellol")
    }
}

class Test4 : Test2 {
    override fun test1() {
        print("World")
    }
}

接口中的屬性

接口中聲明的屬性要麼是抽象的,要麼提供訪問器的自定義實現。

相關文章
相關標籤/搜索