在 kotlin 中,有乙個 data 關鍵字,來標記類,這種類一般只用來儲存資料,但是資料類必須滿足類以下條件:
1. 主建構函式至少有乙個引數
2. 主建構函式的引數必須使用 var 或者 val 標記
3. 資料類不能使抽象、開放、密封或者內部的
4. (1.1以前)資料類只能實現介面
data class demo1(val name:string,val age:int)
class demo2(val name:string,val age:int)
fun main(args: array)
結果:
可以看到,data 類和非 data 類的一點不一樣,其實,對於 data 類,編譯器會自動從主建構函式的所有屬性中匯入以下成員:
1. equals() / hashcode() 對
2. tostring() 格式 "demo1(name=宋琪飛,age=20)"
3. copy 函式
copy 函式是為了我們複製乙個物件僅僅只改變它的一些屬性,其他部分不變時使用的,如下:
data class demo(val name:string,val age:int)
fun main(args: array)
結果:
注意:如果你的 data 類對於上述函式有具體的實現,或者其父類對這些函式有 final 的實現,那麼 data 類就會直接使用現有函式,而不會自動生成。data 類當然也可以在類體中宣告屬性,只是編譯器在自動生成函式時不會使用類中宣告的元素。
data class demo(val name:string,val age:int)
fun main(args: array)
結果:
Kotlin學習之資料類
kotlin學習 經常要建立一些只儲存資料的類。在這些類中,一些標準函式往往是從資料機械推導而來的。在kotlin中,這叫做資料類並標記為data。宣告乙個資料類的語法格式如下 data class 類名 繼承類和實現介面 主建構函式的引數列表必須使用val var宣告為類屬性,而且要求至少有乙個,...
Kotlin學習 Kotlin列舉類
列舉類最基本的用法是實現乙個型別安全的列舉。列舉常量用逗號分隔,每個列舉常量都是乙個物件 enum class color每乙個列舉都是列舉類的例項,它們可以被初始化 enum class color val rgb int 預設名稱為列舉字元名,值從0開始。若需要指定值,則可以使用其建構函式 en...
Kotlin學習筆記(三) Kotlin密封類
前言 密封類,可以理解為列舉,規定了有限個型別,不可以存在其他型別,但列舉每個列舉常量只存在乙個示例,但是密封類的子類可以有多個示例,所以可以將密封類看做是列舉的拓展,基於列舉,高於列舉,青出於藍而勝於藍。正文密封類和普通類的區別,在於密封類使用了sealed修飾符,雖然密封類也可以有子類,但是所有...