從零開始系列:segmentfault
Kotlin中聲明一個屬性能夠使用val
或var
關鍵字。var
表示爲可變屬性,val
表示爲只讀屬性。對象
class Test { val x = 0; var y = 1.0f }
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") } }
接口中聲明的屬性要麼是抽象的,要麼提供訪問器的自定義實現。