Kotlin可見性修飾符詳解
一、 四種修飾符的說明
- public修飾符表示 公有 。此修飾符的范圍最大。當(dāng)不聲明任何修飾符時,系統(tǒng)會默認(rèn)使用此修飾符。
- internal修飾符表示 模塊 。對于模塊的范圍在下面會說明。
- protected修飾符表示 私有+子類。值得注意的是,此修飾符不能用于頂層聲明,在下面可以看到。
- private修飾符表示 私有 。此修飾符的范圍最小,即可見性范圍最低。
二、在不同場景下各個修飾符聲明的范圍講解
對于可見性修飾符來說,不管是Java還是Kotlin,在不同的場景下用可見性修飾符修飾過的變量、函數(shù)、屬性等都有不同的引用范圍。
2.1、在包(package)中聲明,即頂層聲明的情況
在頂層申明中分為下面兩種情況:
- 在同一個文件中訪問的情況
- 在不同文件中訪問的情況
2.1.1、測試同一個文件中聲明不同的修飾符的范圍
在同一個文件中的訪問情況
2.1.2、測試不同文件中聲明不同的修飾符的范圍
在不同文件中的訪問情況
2.1.3、小結(jié)
- 在頂層情況下聲明的變量、方法、類、接口等,不能使用protected修飾符。
- public修飾符可省略,因?yàn)樗窍到y(tǒng)默認(rèn)的。
- 在同一文件下,用任意修飾符都可以訪問,當(dāng)然此處除開protected修飾符
- 在不同文件下,只能訪問public、internal修飾符修飾的變量、方法等
- 上邊只演示了在頂層聲明方法的情況,不過聲明其他的也是一樣的。
2.2、在類(class)和接口(interface)中聲明的情況
在類中聲明的情況和在接口中聲明的情況是完全不相同的。
2.2.1、測試在類中聲明的情況
在類中聲明的情況
2.2.2、測試在接口中聲明的情況
在接口中聲明的情況
使用接口中聲明的屬性
2.2.3、小結(jié)
- 在類中聲明屬性、方法等,可以使用任意修飾符修飾。并且在類中的任意位置都能訪問各個修飾符修飾的屬性、方法等。
- 在類外,只能訪問由public、internal修飾符修飾的屬性、方法。此情況不管是不是在同一個文件中去操作。
- 在接口中聲明的情況下,只能由public修飾符修飾屬性。方法可由public、private兩個修飾符去修飾,但是,用private修飾符修飾符修飾的方法不能被實(shí)現(xiàn)該接口的類重寫。
- 為了使用接口中由public修飾符修飾的屬性、方法等。只能定義一個類去實(shí)現(xiàn)該接口,然后重寫其屬性、方法。這樣就能在可在類中或類外去操作。
2.3、在構(gòu)造函數(shù)中聲明的情況
在Kotlin中分為主構(gòu)造函數(shù),和副級或多級構(gòu)造函數(shù),當(dāng)然在Java中也是存在的,只不過我們更習(xí)慣稱其為方法重載。)。
故而,當(dāng)我們在構(gòu)造函數(shù)中聲明的情況下,如果是主構(gòu)造函數(shù)的時候,是和在類(class)中聲明的情況是一樣的。如果是主構(gòu)造函數(shù)的時候,則是和在局部聲明的情況是一樣的。
2.4、局部聲明的情況
在局部聲明的情況下,只能使用public修飾符修飾的變量。并且在變量只能在局部這個范圍內(nèi)使用,出了這個范圍后就訪問不到了。
三、與Java中的可見性修飾符的對比
Java中的可見性修飾符和Koltin中的可見性修飾符還是很有幾點(diǎn)不同之處的:
- 四種修飾符的不同。Koltin的四種修飾符(public、interna、protected、private),Java的的四種修飾符(public、protected、privavte、default(即不使用任何修飾符))。
- 默認(rèn)修飾符的不同。Kotlin的默認(rèn)修飾符為public,Java的默認(rèn)修飾符為default。
到此這篇關(guān)于Kotlin可見性修飾符詳解的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android中圖片的三級緩存cache策略(內(nèi)存/文件/網(wǎng)絡(luò))
實(shí)現(xiàn)圖片緩存也不難,需要有相應(yīng)的cache策略。這里我采用 內(nèi)存-文件-網(wǎng)絡(luò) 三層cache機(jī)制,其中內(nèi)存緩存包括強(qiáng)引用緩存和軟引用緩存(SoftReference),其實(shí)網(wǎng)絡(luò)不算cache,這里姑且也把它劃到緩存的層次結(jié)構(gòu)中2013-06-06Android PopupWindow被輸入法彈上去之后無法恢復(fù)原位的解決辦法
這篇文章主要介紹了Android PopupWindow被輸入法彈上去之后無法恢復(fù)原位的解決辦法,需要的朋友可以參考下2016-12-12android LinearLayout和RelativeLayout組合實(shí)現(xiàn)精確布局方法介紹
用android LinearLayout和RelativeLayout實(shí)現(xiàn)精確布局此方法適合很適合新人看2012-11-11Android開發(fā)設(shè)置RadioButton點(diǎn)擊效果的方法
這篇文章主要介紹了Android開發(fā)設(shè)置RadioButton點(diǎn)擊效果的方法,詳細(xì)分析了Android開發(fā)中RadioButton屬性功能及相關(guān)設(shè)置技巧,需要的朋友可以參考下2017-06-06Android中使用Intent在Activity之間傳遞對象(使用Serializable或者Parcelable)的
這篇文章主要介紹了 Android中使用Intent在Activity之間傳遞對象(使用Serializable或者Parcelable)的方法的相關(guān)資料,需要的朋友可以參考下2016-01-01Android Studio報(bào)錯Manifest merger failed with multiple errors
這篇文章主要介紹了Android Studio報(bào)錯Manifest merger failed with multiple errors2017-10-10Android創(chuàng)建文件時出現(xiàn)java.io.IOException:?Operation?not?permitte
最近使用android10創(chuàng)建文件失敗,并拋出權(quán)限異常,這篇文章主要給大家介紹了Android創(chuàng)建文件時出現(xiàn)java.io.IOException:?Operation?not?permitted異常的解決方法,需要的朋友可以參考下2023-05-05