<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 可見性修飾符 [TOC] 類、對象、接口、構造函數、方法、屬性和它們的 setter 都可以有**可見性修飾符**。(getter 總是與屬性有著相同的可見性)。在 Kotlin 中有這四個可見性修飾符:`private`、 `protected`、 `internal` 和 `public`。**如果沒有顯式指定修飾符的話,默認可見性是 `public`**。 以下解釋了這些修飾符如何應用到不同類型的聲明作用域。 ## 包 函數、屬性和類、對象和接口可以在頂層聲明,即直接在包內: ```kotlin // 文件名:example.kt package foo fun baz() { …… } class Bar { …… } ``` * 如果你不指定任何可見性修飾符,默認為 `public`,這意味著你的聲明將隨處可見; * 如果你聲明為 `private`,它**只會在聲明它的文件內可見**; * 如果你聲明為 `internal`,它**會在相同模塊內隨處可見**;(何謂模塊,參考本文最后一節) * **`protected` 不適用于頂層聲明**。 >[info]注意:要使用另一包中可見的頂層聲明,仍需將其[導入](http://www.hmoore.net/alex_wsc/android_kotlin/1318246)進來。 例如: ```kotlin // 文件名:example.kt package foo private fun foo() { …… } // 在 example.kt 內可見 public var bar: Int = 5 // 該屬性隨處可見 private set // setter 只在 example.kt 內可見 internal val baz = 6 // 相同模塊內可見 ``` ## 類和接口 對于類內部聲明的成員: * `private` 意味著只在這個類內部(包含其所有成員)可見; * `protected`—— 和 `private`一樣 + 在子類中可見。 * `internal` —— 能見到類聲明的 *本模塊內* 的任何客戶端都可見其 `internal` 成員; * `public` —— 能見到類聲明的任何客戶端都可見其 `public` 成員。 >[warning]注意:在 Kotlin 中,**外部類不能訪問內部類的 private 成員**。 * 如果你覆蓋一個 `protected` 成員并且沒有顯式指定其可見性,該成員還會是 `protected` 可見性。 例子: ```kotlin open class 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,且沒有顯式指定其可見性,所以還是`protected`可見性 } class Unrelated(o: Outer) { // o.a、o.b 不可見 // o.c 和 o.d 可見(相同模塊) // Outer.Nested 不可見,Nested::e 也不可見//::創建一個成員引用或者一個類引用 } ``` ### 構造函數 要**指定一個類的的主構造函數的可見性**,使用以下語法(注意你需要添加一個顯式 **constructor**關鍵字): ```kotlin class C private constructor(a: Int) { …… } ``` 這里的構造函數是私有的。默認情況下,所有構造函數都是 `public`,這實際上等于類可見的地方它就可見(即 一個 `internal` 類的構造函數只能在相同模塊內可見). ### 局部聲明 局部變量、函數和類不能有可見性修飾符。 ## 模塊 可見性修飾符 `internal` 意味著該成員只在相同模塊內可見。更具體地說, 一個模塊是編譯在一起的一套 Kotlin 文件: * 一個 IntelliJ IDEA 模塊; * 一個 Maven 項目; * 一個 Gradle 源集(例外是 `test` 源集可以訪問 `main` 的 internal 聲明); * 一次 `<kotlinc>` Ant 任務執行所編譯的一套文件。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看