在Kotlin
中,不論是類,對象,接口,構造函數,函數,屬性及其設置器
都具備可見性修飾符。Kotlin
中的可見性修飾符共四種。即public、protected、private、internal
。在不一樣的場景聲明不一樣的修飾符都有不一樣的可見性。下面詳解介紹不一樣的修飾符在不一樣場景的範圍。 這裏值得注意的是,屬性的Getter()
函數的可見性具備與屬性相同的可見性。git
public
修飾符表示 公有 。此修飾符的範圍最大。當不聲明任何修飾符時,系統會默認使用此修飾符。internal
修飾符表示 模塊 。對於模塊
的範圍在下面會說明。protected
修飾符表示 私有+
子類。值得注意的是,此修飾符不能用於頂層
聲明,在下面能夠看到。private
修飾符表示 私有 。此修飾符的範圍最小,便可見性範圍最低。對於可見性修飾符來講,不論是
Java
仍是Kotlin
,在不一樣的場景下用可見性修飾符修飾過的變量、函數、屬性等都有不一樣的引用範圍。github
package
)中聲明,即頂層聲明的狀況在頂層申明中分爲下面兩種狀況:函數
- 在同一個文件中訪問的狀況
- 在不一樣文件中訪問的狀況
2.1.一、測試同一個文件中聲明不一樣的修飾符的範圍 測試
2.1.二、測試不一樣文件中聲明不一樣的修飾符的範圍 code
2.1.三、小結cdn
- 在頂層狀況下聲明的變量、方法、類、接口等,不能使用
protected
修飾符。public
修飾符可省略,由於它是系統默認的。- 在同一文件下,用任意修飾符均可以訪問,固然此處除開
protected
修飾符- 在不一樣文件下,只能訪問
public
、internal
修飾符修飾的變量、方法等- 上邊只演示了在頂層聲明方法的狀況,不過聲明其餘的也是同樣的。
class
)和接口(interface
)中聲明的狀況
- 在類中聲明的狀況和在接口中聲明的狀況是徹底不相同的。
2.2.一、測試在類中聲明的狀況 對象
2.2.二、測試在接口中聲明的狀況 blog
2.2.三、小結接口
- 在類中聲明屬性、方法等,可使用任意修飾符修飾。而且在類中的任意位置都能訪問各個修飾符修飾的屬性、方法等。
- 在類外,只能訪問由
public
、internal
修飾符修飾的屬性、方法。此狀況不論是不是在同一個文件中去操做。- 在接口中聲明的狀況下,只能由
public
修飾符修飾屬性。方法可由public
、private
兩個修飾符去修飾,可是,用private
修飾符修飾符修飾的方法不能被實現該接口的類重寫。- 爲了使用接口中由
public
修飾符修飾的屬性、方法等。只能定義一個類去實現該接口,而後重寫其屬性、方法。這樣就能在可在類中或類外去操做。
看過我前幾遍文章的都知道在
Kotlin
中分爲主構造函數,和副級或多級構造函數,固然在Java
中也是存在的,只不過咱們更習慣稱其爲方法重載
。對此還不甚清晰的,能夠閱讀個人上一篇文章Kotlin——中級篇(一):類(class)詳解。 故而,當咱們在構造函數中聲明的狀況下,若是是主構造函數的時候,是和在類(class
)中聲明的狀況是同樣的。若是是主構造函數的時候,則是和在局部聲明的狀況是同樣的。get
在局部聲明的狀況下,只能使用
public
修飾符修飾的變量。而且在變量只能在局部這個範圍內使用,出了這個範圍後就訪問不到了。
Java
中的可見性修飾符的對比
Java
中的可見性修飾符和Koltin
中的可見性修飾符仍是頗有幾點不一樣之處的: 一、 四種修飾符的不一樣。Koltin
的四種修飾符(public、interna、protected、private
),Java
的的四種修飾符(public、protected、privavte、default(即不使用任何修飾符)
)。 二、默認修飾符的不一樣。Kotlin
的默認修飾符爲public
,Java
的默認修飾符爲default
。
此節主要涉及的知識大部分是理論知識,上面分析了各個修飾符在每一種狀況下的範圍使用。這一節是很基礎的東西,可是越是基礎的東西越是容易忘記,甚至記得不清晰,各位能夠好好看一下各類狀況下的截圖,上面寫的非常清晰,而且對每一點下面都做了小結。
若是各位大佬看了以後感受還闊以,就請各位大佬隨便star
一下,您的關注是我最大的動力。
個人我的博客:Jetictors
個人github:Jetictors