- 可見性修飾符
類、對象、接口、構造函數、方法、屬性和它們的setter都可以有可見性修飾符。(getter總是與屬性有相同的可見性)
可見性修飾符:private、protect、internal、public,如果沒有顯示指定的話默認爲public。
1.包
函數、屬性、類、對象、接口可以在頂層聲明,既直接在包內
public:這意味着聲明隨處可見
private:只會在聲明它的文件可見
internal:會在相同模塊隨處可見
protected:不適宜與頂層聲明
==要使用另一包中的可見的頂層聲明,仍需將其導入進來
private fun foo() { } // 在 example.kt 內可見
public var bar: Int = 5 // 該屬性隨處可見
private set // setter 只在 example.kt 內可見
internal val baz = 6 // 相同模塊內可見
2.類和接口
對於類和接口內部聲明的成員
private:只在這個類內部(包含其所有成員可見)
protected:在這個類的內部和子類中可見
interval:能見到類聲明的本模塊內的任何客戶端可見interval成員
public :能見到類聲明的任何客戶端都可見
外部類不能訪問內部類的private成員
如果覆蓋一個protected成員並且沒有顯示指定其可見性,該成員還是protected
- 模塊
- 可見性修飾符internal意味着該成員只在相同模塊可見。更具體地說,一個模塊是編譯在一起的一套kotlin文件:
- 一個IntelliJ IDEA模塊
- 一個Maven項目
- 一個Gradle源集(例外:test源集可以訪問main的internal聲明)
- 一次 ant任務執行所編譯的一套文件