Kotlin的擴(kuò)展函數(shù)/屬性

本文作者: 楊曉輝

本文鏈接: http://youngxhui.github.io/2017/08/12/Kotlin-擴(kuò)展函數(shù)-屬性/

版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 3.0 許可協(xié)議。

轉(zhuǎn)載請注明出處!http://youngxhui.github.io/2017/08/12/Kotlin-%E6%89%A9%E5%B1%95%E5%87%BD%E6%95%B0-%E5%B1%9E%E6%80%A7/#hcq=ft0uhyq

前言

擴(kuò)展函數(shù)和擴(kuò)展屬性在 Java 里面是沒有的,這樣的話很好的彌補(bǔ)了 Java 的缺陷。所謂擴(kuò)展方法或者屬性是指在原來沒有的方法或者屬性上進(jìn)行擴(kuò)展,不會改變原來的屬性和方法。

擴(kuò)展函數(shù)

聲明擴(kuò)展函數(shù)的方法是先寫上要擴(kuò)展的類名,之后在寫擴(kuò)展方法。

對 Book 這個類進(jìn)行擴(kuò)展,這個類只有一個方法,在我們不修改 Book 類的前提下對其進(jìn)行擴(kuò)展。

class Book(val name: String, var price: Int) {
    val ISBN: Int = 123456789
    fun add() {
        println("Add a book,name is $name,price is $price,ISBN is $ISBN")
    }
}
fun Book.show() = add()

這樣我們便完成了對 Book 類進(jìn)行擴(kuò)展。

在擴(kuò)展函數(shù)中,可以使用原有類的方法,變量。

fun main(args: Array<String>) {
    val book = Book("紅樓夢", 50)
    book.show()
}

擴(kuò)展是靜態(tài)解析的
擴(kuò)展不能真正的修改他們所擴(kuò)展的類。通過定義一個擴(kuò)展,你并沒有在一個類中插入新成員, 僅僅是可以通過該類型的變量用點(diǎn)表達(dá)式去調(diào)用這個新函數(shù)。

擴(kuò)展屬性

擴(kuò)展屬性不能初始化器,所以只能是使用顯示 get/set 方法進(jìn)行定義。

任就采用上面的例子。給 Book 添加一個 profit 屬性。

像這個樣子,我們就定義了這個類的擴(kuò)展屬性

val Book.profit: Int
    get() = price - 20
fun main(args: Array<String>) {
    val book = Book("紅樓夢", 50)
    book.show()
    println("book's profit is ${book.profit}")
}

更多關(guān)于擴(kuò)展函數(shù)/方法的例子可以參考官方網(wǎng)站

kotlin官方文檔(中文)

kotlin官方文檔(英文)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • @synthesize和@dynamic分別有什么作用?@property有兩個對應(yīng)的詞,一個是 @synthes...
    筆筆請求閱讀 631評論 0 1
  • 前言 人生苦多,快來 Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,686評論 9 118
  • Google在今年的IO大會上宣布,將Android開發(fā)的官方語言更換為Kotlin,作為跟著Google玩兒An...
    藍(lán)灰_q閱讀 77,186評論 31 489
  • ¥關(guān)閉¥ 【雷霆戰(zhàn)機(jī)】 〖http://pan.baidu.com/s/1kVstszX〗 《解壓源碼后直接用AI...
    小菜c閱讀 9,831評論 0 19
  • 那一年一首認(rèn)真的雪讓我認(rèn)識了你 青澀而懵懂的你 后來你杳無音訊 我甚至以為你已退出娛樂圈 直到15年演員這首歌讓我...
    潮流季閱讀 383評論 0 0

友情鏈接更多精彩內(nèi)容