Kotlin-屬性與字段

屬性

聲明屬性

Kotlin 類中的屬性既可以用關(guān)鍵字 var 聲明為可變的,也可以用關(guān)鍵字 val 聲明為只讀的。

class Address {
    var name: String = "Holmes, Sherlock"
    var street: String = "Baker"
    var city: String = "London"
    var state: String? = null
    var zip: String = "123456"
}

要使用一個屬性霎终,只要用名稱引用它即可:

fun copyAddress(address: Address): Address {
    val result = Address() // Kotlin 中沒有“new”關(guān)鍵字
    result.name = address.name // 將調(diào)用訪問器
    result.street = address.street
    // ……
    return result
}

Getters 與 Setters

聲明一個屬性的完整語法是

var <propertyName>[: <PropertyType>] [= <property_initializer>]
    [<getter>]
    [<setter>]

其初始器(initializer)、getter 和 setter 都是可選的。屬性類型如果可以從初始器 (或者從其 getter 返回值尤勋,如下文所示)中推斷出來,也可以省略茵宪。

var allByDefault: Int? // 錯誤:需要顯式初始化器最冰,隱含默認(rèn) getter 和 setter
var initialized = 1 // 類型 Int、默認(rèn) getter 和 setter

一個只讀屬性的語法和一個可變的屬性的語法有兩方面的不同:1稀火、只讀屬性的用 val開始代替var 2锌奴、只讀屬性不允許 setter

val simple: Int? // 類型 Int、默認(rèn) getter憾股、必須在構(gòu)造函數(shù)中初始化
val inferredType = 1 // 類型 Int 、默認(rèn) getter

我們可以為屬性定義自定義的訪問器箕慧。如果我們定義了一個自定義的 getter服球,那么每次訪問該屬性時都會調(diào)用它 (這讓我們可以實現(xiàn)計算出的屬性)。以下是一個自定義 getter 的示例:

val isEmpty: Boolean
    get() = this.size == 0

如果我們定義了一個自定義的 setter颠焦,那么每次給屬性賦值時都會調(diào)用它斩熊。一個自定義的 setter 如下所示:

var stringRepresentation: String
    get() = this.toString()
    set(value) {
        setDataFromString(value) // 解析字符串并賦值給其他屬性
    }

按照慣例,setter 參數(shù)的名稱是 value伐庭,但是如果你喜歡你可以選擇一個不同的名稱粉渠。
自 Kotlin 1.1 起,如果可以從 getter 推斷出屬性類型圾另,則可以省略它:

val isEmpty get() = this.size == 0  // 具有類型 Boolean

如果你需要改變一個訪問器的可見性或者對其注解霸株,但是不需要改變默認(rèn)的實現(xiàn), 你可以定義訪問器而不定義其實現(xiàn):

var setterVisibility: String = "abc"
    private set // 此 setter 是私有的并且有默認(rèn)實現(xiàn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末集乔,一起剝皮案震驚了整個濱河市去件,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖尤溜,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倔叼,死亡現(xiàn)場離奇詭異,居然都是意外死亡宫莱,警方通過查閱死者的電腦和手機丈攒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來授霸,“玉大人巡验,你說我怎么就攤上這事【希” “怎么了深碱?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長藏畅。 經(jīng)常有香客問我敷硅,道長,這世上最難降的妖魔是什么愉阎? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任绞蹦,我火速辦了婚禮,結(jié)果婚禮上榜旦,老公的妹妹穿的比我還像新娘幽七。我一直安慰自己,他們只是感情好溅呢,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布澡屡。 她就那樣靜靜地躺著,像睡著了一般咐旧。 火紅的嫁衣襯著肌膚如雪驶鹉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天铣墨,我揣著相機與錄音室埋,去河邊找鬼。 笑死伊约,一個胖子當(dāng)著我的面吹牛姚淆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屡律,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼腌逢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了超埋?” 一聲冷哼從身側(cè)響起上忍,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤骤肛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窍蓝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腋颠,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年吓笙,在試婚紗的時候發(fā)現(xiàn)自己被綠了淑玫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡面睛,死狀恐怖絮蒿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叁鉴,我是刑警寧澤土涝,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站幌墓,受9級特大地震影響但壮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜常侣,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一蜡饵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胳施,春花似錦溯祸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椿胯,卻和暖如春氨鹏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背压状。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跟继,地道東北人种冬。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像舔糖,于是被迫代替她去往敵國和親娱两。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 聲明屬性 Kotlin 類中的屬性既可以用關(guān)鍵字 var 聲明為可變的金吗,也可以用關(guān)鍵字 val 聲明為只讀的十兢。 使...
    WotYang閱讀 3,264評論 0 0
  • 借鑒kotlin中文站 聲明屬性 Kotlin類中聲明屬性趣竣,即可用關(guān)鍵字var聲明成可變的,又可以用關(guān)鍵字val聲...
    簡書_大叔閱讀 404評論 0 0
  • 簡介 本篇博客主要是介紹Kotlin語法中的【類的屬性和字段】相關(guān)的知識旱物,幫助各位更快的掌握Kotlin遥缕,如果有疏...
    Android探索之路閱讀 865評論 0 0
  • 1、聲明屬性 Kotlin 類中的屬性既可以用關(guān)鍵字 var聲明為可變的宵呛,也可以用關(guān)鍵字 val聲明為只讀的单匣。 要...
    愛學(xué)習(xí)的蹭蹭閱讀 632評論 0 1
  • 久違的晴天,家長會宝穗。 家長大會開好到教室時户秤,離放學(xué)已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗逮矛。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,523評論 16 22