<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java 中的訪問修飾符 > 原文: [https://javabeginnerstutorial.com/core-java-tutorial/access-modifier-in-java/](https://javabeginnerstutorial.com/core-java-tutorial/access-modifier-in-java/) Java 中的訪問修飾符可幫助您設置所需的類,變量和方法的訪問級別。 有三個訪問修飾符。 不包括默認訪問修飾符。 默認值為訪問控制,當未指定任何訪問修飾符時將設置訪問控制。 ## 訪問控制 * `public` * `private` * `protected` * 默認 訪問修飾符(*某些或全部*)可以應用于*類,變量,方法*。 ## 類的訪問修飾符 Java 中的類只能使用`public`和默認訪問修飾符。 ### `public` 設置為`public`時,java 世界中所有可用的類都可以訪問給定的類。 ### 默認 當設置為默認值時,給定的類將可供同一包中定義的類訪問。 ## Java 類的訪問修飾符表 | **可見性** | **公開訪問修飾符** | **默認訪問修飾符** | | --- | --- | --- | | **位于同一包中** | Yes | Yes | | **來自同一個包** | Yes | NO | ## 實例和靜態變量的訪問修飾符 變量適用于所有下面提到的修飾符。 * `public` * `private` * `protected` * 默認 > 在檢查在該類內部定義的變量的可見性之前,應檢查該類的可見性。 > > 如果該類是可見的,則在該類內部定義的變量將是可見的。 > > 如果看不到類,則即使將其設置為`public`,也將無法訪問任何變量。 ### 默認 如果將變量設置為默認值,則同一包中定義的類將可以訪問該變量。 在同一包中的類中定義的任何方法都可以訪問變量或**繼承**或**直接訪問**。 ### `public` 如果將變量設置為公開變量,則可以從 Java 世界中可用的任何類中進行訪問。 任何類中的任何方法都可以訪問給定變量或**繼承**或**直接訪問**。 ### `protected` 如果將變量在類內設置為**受保護的**,則只能通過**繼承**從相同或不同包中定義的子類中對其進行訪問。 > 保護和默認之間的唯一區別是受保護的訪問修飾符遵守**類-子類關系**,而默認則不。 ### `private` 只能從定義變量的類內部訪問定義的變量`private`。 此類變量不能從已定義的類外部訪問,甚至不能在其子類中訪問。 ## Java 變量的訪問修飾符表 | **可見性** | **公共訪問修飾符** | **私有訪問修飾符** | **受保護的訪問修飾符** | **默認訪問修飾符** | | --- | --- | --- | --- | --- | | **在同一個類中** | Yes | Yes | Yes | Yes | | **來自同一包裝中的任何類** | Yes | No | Yes | Yes | | **來自同一包中的任何子類** | Yes | No | Yes | Yes | | **來自不同包的任何子類** | Yes | No | Yes(**僅通過繼承**) | No | | **來自不同包裝中的任何非子類** | Yes | No | No | No | ## 方法的訪問修飾符 方法適用于以下所有修飾符。 ### 默認 當“方法”設置為默認值時,同一包中定義的類將可以訪問該方法。 在同一包中定義的任何類中的任何方法都可以訪問給定的方法或**繼承**或**直接訪問**。 ### `public` 將方法設置為`public`時,可以從 Java 世界中可用的任何類中訪問它。 任何類中的任何方法都可以訪問或**繼承**或**直接訪問**的給定方法,具體取決于類級別的訪問。 `protected` 如果將方法設置為在類內部進行保護,則可以從在相同或不同包中定義的子類訪問該方法。 > 受保護的訪問權限和默認訪問權限之間的唯一區別是受保護的訪問修飾符遵守**的類-子類關系**,而默認的則不這樣做。 `private` 只能從定義其的類內部訪問定義為私有的方法。 此類方法無法從已定義的類外部訪問,甚至不能從其子類訪問。 ## Java 方法的訪問修飾符表 | **可見性** | **公共訪問修飾符** | **私有訪問修飾符** | **受保護訪問修飾符** | **默認訪問修飾符** | | --- | --- | --- | --- | --- | | **相同類中** | Yes | Yes | Yes | Yes | | **來自同一包中的任何類** | Yes | No | Yes | Yes | | **來自同一包中的任何子類** | Yes | No | Yes | Yes | | **來自不同包的任何子類** | Yes | No | Yes(**僅通過繼承**) | No | | **來自不同包裝中的任何非子類** | Yes | No | No | No | ## 局部變量的訪問修飾符 *無法將*訪問修飾符應用于局部變量。 只能將`final`應用于局部變量,該局部變量是[非訪問修飾符](https://javabeginnerstutorial.com/core-java-tutorial/non-access-modifiers-in-java/ "Non Access Modifiers in Java")。 ## 繼承或直接訪問之間的區別 下面說明了繼承和直接訪問之間的區別。 超類 ```java package com.jbt; public class FirstClass { public int i; protected int j; private int k; int l; } ``` 同一包中的子類 ```java package com.jbt; class SecondClass extends FirstClass { void method() { System.out.println(i); System.out.println(j); // Respect the parent child relationship irrespective of package System.out.println(k); // Compilation Error System.out.println(l); // Accessible as it is in same package FirstClass cls = new FirstClass(); System.out.println(cls.i); System.out.println(cls.j); System.out.println(cls.l); // Private variable will not be accessible here also. System.out.println(cls.k); // Compilation error } } ``` 不同包中的子類 ```java package com.jbt.newpackage; import com.jbt.FirstClass; class SecondClass extends FirstClass { void method() { // Access through inheritance System.out.println(i); System.out.println(j); // Respect the parent child relationship irrespective of package System.out.println(k); // Compilation error - private variable System.out.println(l); // Compilation Error - not accessible as it is in diff package FirstClass cls = new FirstClass(); System.out.println(cls.i); // Accessible because it is public System.out.println(cls.j); // Compilation error // Private variable will not be accessible here also. System.out.println(cls.k); // Compilation error System.out.println(cls.l); // Compilation error } } ``` ### 備忘單 * `public`,`private`,`protected`是 3 種訪問修飾符 * Java 有 4 個訪問級別。 **公開,私有,受保護 & 默認**。 * 一個類只能具有公開和默認訪問級別。 * 方法和實例變量(**非本地**)可以使用所有 4 個訪問級別。 * 如果某個類對其他類不可見,則即使該成員的訪問級別是公開的,也沒有訪問該類成員的問題(**重要**)。 * 在成員可見之前,應檢查類可見性。 * 如果超類具有公開成員,則子類將繼承它,即使它在其他包中也是如此。 * `this`始終引用當前正在執行的對象。 * 其他成員甚至可以從其他包中訪問公開成員。 * 只能通過同一類中的代碼訪問私有成員。 * 默認成員對包外部的子類不可見。 * 即使在不同的包中,受保護的成員也可以被子類看到。 * *受保護*與*默認*之間的不同之處在于,默認僅在包之外的子類的情況下才會顯示。 * 局部變量*不能*具有*訪問修飾符*。 * 局部變量只能具有可以應用的最終非訪問修飾符。 <https://www.youtube.com/embed/WZRTwkCOYBQ?feature=oembed>
                  <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>

                              哎呀哎呀视频在线观看