2.包,函數(shù)、屬性和類、對象和接口可以在頂層聲明,即直接在包內(nèi)
古田ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!// 文件名:example.ktpackage foo
fun baz() { ...... }
class Bar { ...... }
//— 如果你不指定任何可?性修飾符,默認為 public,這意味著你的聲明將隨處可?;
//— 如果你聲明為 private,它只會在聲明它的文件內(nèi)可?;
//— 如果你聲明為 internal,它會在相同模塊內(nèi)隨處可?;
//— protected 不適用于頂層聲明。
//注意:要使用另一包中可?的頂層聲明,仍需將其導入進來。 例如:
// 文件名:example.kt package fooprivate fun foo() {
......
}// 在 example.kt 內(nèi)可?public var bar: Int = 5 // 該屬性隨處可?private set // setter 只在 example.kt 內(nèi)可?internal val baz = 6 // 相同模塊內(nèi)可?
3.類和接口,對于類內(nèi)部聲明的成員:
//— private意味著只在這個類內(nèi)部(包含其所有成員)可?;
//— protected ? 和 private 一樣 + 在子類中可?。
//— internal ? 能?到類聲明的 本模塊內(nèi) 的任何客戶端都可?其 internal 成員;
//— public ? 能?到類聲明的任何客戶端都可?其 public 成員。
//請注意在 Kotlin 中,外部類不能訪問內(nèi)部類的 private 成員。
//如果你覆蓋一個 protected 成員并且沒有顯式指定其可?性,該成員還會是 protected 可?性。 例子:
openclass Outer {
private val a = 1 protected open val b = 2 internal val c = 3
val d= 4 //默認public protected class Nested {
public val e: Int = 5
}
}
class Subclass : Outer() { // a 不可?
// b、c、d 可?
// Nested 和 e 可? override val b = 5 // “b”為 protected}
class Unrelated(o: Outer) {
// o.a、o.b 不可?
// o.c 和 o.d 可?(相同模塊)
// Outer.Nested 不可?,Nested::e 也不可?}
4.構造函數(shù),要指定一個類的的主構造函數(shù)的可?性,使用以下語法(注意你需要添加一個顯式constructor關鍵字)
class C private constructor(a: Int) { ...... }
//這里的構造函數(shù)是私有的。默認情況下,所有構造函數(shù)都是 public,這實際上等于類可?的地方它就可?(即 一個 internal 類的構造函數(shù)只能在相同模塊內(nèi)可?)
5.局部聲明,局部變量、函數(shù)和類不能有可?性修飾符。
6.模塊,可?性修飾符 internal 意味著該成員只在相同模塊內(nèi)可?。更具體地說,一個模塊是編譯在一起的 一套 Kotlin 文件
//— 一個IntelliJIDEA模塊;
//— 一個Maven項目;
// 一個 Gradle 源集(例外是 test 源集可以訪問 main 的 internal 聲明);
//— 一次 Ant 任務執(zhí)行所編譯的一套文件。