您好,登錄后才能下訂單哦!
這篇文章主要講解了“Kotlin擴(kuò)展函數(shù)和擴(kuò)展屬性怎么聲明”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Kotlin擴(kuò)展函數(shù)和擴(kuò)展屬性怎么聲明”吧!
擴(kuò)展函數(shù)和擴(kuò)展屬性
1、擴(kuò)展函數(shù)
擴(kuò)展函數(shù)用于為一個(gè)類增加一種新的行為,這是為缺少有用函數(shù)的類進(jìn)行擴(kuò)展的途徑。擴(kuò)展函數(shù)的用途就類似于在 Java 中實(shí)現(xiàn)的靜態(tài)工具方法。而在 Kotlin 中使用擴(kuò)展函數(shù)的一個(gè)優(yōu)勢(shì)就是我們不需要在調(diào)用方法的時(shí)候把整個(gè)對(duì)象當(dāng)作參數(shù)傳入,擴(kuò)展函數(shù)表現(xiàn)得就像是屬于這個(gè)類本身的一樣,可以使用 this 關(guān)鍵字并直接調(diào)用其所有 public 方法
擴(kuò)展函數(shù)并不允許你打破它的封裝性,和在類內(nèi)部定義的方法不同的是,擴(kuò)展函數(shù)不能訪問私有的或是受保護(hù)的成員
擴(kuò)展函數(shù)的聲明
之后,我們就可以像調(diào)用類本身內(nèi)部聲明的方法一樣,直接調(diào)用擴(kuò)展函數(shù)
2、擴(kuò)展屬性
擴(kuò)展函數(shù)也可以用于屬性
3、不可重寫的擴(kuò)展函數(shù)
看以下例子,子類 Button 重寫了父類 View 的 click() 函數(shù),此時(shí)如果聲明一個(gè) View 變量,并賦值為 Button 類型的對(duì)象,調(diào)用的 click() 函數(shù)將是 Button 類重寫的方法
此外,如果一個(gè)類的成員函數(shù)和擴(kuò)展函數(shù)有相同的簽名,成員函數(shù)會(huì)被優(yōu)先使用
擴(kuò)展函數(shù)并不是真正地修改了原來的類,其底層其實(shí)是以靜態(tài)導(dǎo)入的方式來實(shí)現(xiàn)的。擴(kuò)展函數(shù)可以被聲明在任何一個(gè)文件中,因此有個(gè)通用的實(shí)踐是把一系列有關(guān)的函數(shù)放在一個(gè)新建的文件里
需要注意的是,擴(kuò)展函數(shù)不會(huì)自動(dòng)地在整個(gè)項(xiàng)目范圍內(nèi)生效,如果需要使用到擴(kuò)展函數(shù),需要進(jìn)行導(dǎo)入
4、可空接收者
可以為可空的接收者類型定義擴(kuò)展,即使接受者為 null,使得開發(fā)者在調(diào)用擴(kuò)展函數(shù)前不必進(jìn)行判空操作,且可以通過this == null來檢查接收者是否為空
感謝各位的閱讀,以上就是“Kotlin擴(kuò)展函數(shù)和擴(kuò)展屬性怎么聲明”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Kotlin擴(kuò)展函數(shù)和擴(kuò)展屬性怎么聲明這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。