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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java 訪問修飾符 - 公共、私有、受保護和默認 > 原文: [https://beginnersbook.com/2013/05/java-access-modifiers/](https://beginnersbook.com/2013/05/java-access-modifiers/) 在練習 java 程序時,您必須已經看過公共,私有和受保護的關鍵字,這些被稱為訪問修飾符。訪問修飾符限制對另一個類中的類,構造函數,數據成員和方法的訪問。在 java 中我們有四個訪問修飾符: 1. 默認 2. `private` 3. `protected` 4. `public` ## 1.默認訪問修飾符 當我們沒有提到任何訪問修飾符時,它被稱為默認訪問修飾符。此修飾符的范圍僅限于包。這意味著如果我們在包中有一個具有默認訪問修飾符的類,則只有此包中的那些類才能訪問此類。此程序包之外的其他任何類都無法訪問此類。類似地,如果我們在類中有一個默認方法或數據成員,它將在另一個包的類中不可見。讓我們看一個例子來理解這個: ### Java 中的默認訪問修飾符示例 > 要理解這個例子,你必須具備 java 中[包的知識](https://beginnersbook.com/2013/03/packages-in-java/)。 在這個例子中我們有兩個類,`Test`類試圖訪問`Addition`類的默認方法,因為類`Test`屬于不同的包,這個程序會拋出編譯錯誤,因為默認修飾符的范圍僅限于同一個包中宣布它。 `Addition.java` ```java package abcpackage; public class Addition { /* Since we didn't mention any access modifier here, it would * be considered as default. */ int addTwoNumbers(int a, int b){ return a+b; } } ``` `Test.java` ```java package xyzpackage; /* We are importing the abcpackage * but still we will get error because the * class we are trying to use has default access * modifier. */ import abcpackage.*; public class Test { public static void main(String args[]){ Addition obj = new Addition(); /* It will throw error because we are trying to access * the default method in another package */ obj.addTwoNumbers(10, 21); } } ``` **輸出:** ```java Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method addTwoNumbers(int, int) from the type Addition is not visible at xyzpackage.Test.main(Test.java:12) ``` ## 2.私有訪問修飾符 `private`修飾符的范圍僅限于類。 1. 私有數據成員和方法只能在類中訪問 2. 類和[接口](https://beginnersbook.com/2013/05/java-interface/)不能聲明為私有 3. 如果某個類具有[私有構造函數](https://beginnersbook.com/2013/12/java-private-constructor-example/),那么您無法從該類外部創建該類的對象。 讓我們看一個例子來理解這個: ### java 中的私有訪問修飾符示例 此示例拋出編譯錯誤,因為我們嘗試在類`Example`中訪問類`ABC`的私有數據成員和方法。私有數據成員和方法只能在類中訪問。 ```java class ABC{ private double num = 100; private int square(int a){ return a*a; } } public class Example{ public static void main(String args[]){ ABC obj = new ABC(); System.out.println(obj.num); System.out.println(obj.square(10)); } } ``` 輸出: ```java Compile - time error ``` ## 3.受保護的訪問修飾符 受保護的數據成員和方法只能由同一個包的類和任何包中的子類訪問。您還可以說受保護的訪問修飾符與默認訪問修飾符類似,但有一個例外是它在子類中具有可見性。 類不能聲明受保護。此訪問修飾符通常用于父子關系。 ### Java 中的受保護訪問修飾符示例 在此示例中,另一個包中存在的類`Test`能夠調用`addTwoNumbers()`方法,該方法被聲明為`protected`。這是因為`Test`類擴展了類`Addition`,而`protected`修飾符允許在子類(在任何包中)訪問受保護的成員。 `Addition.java` ```java package abcpackage; public class Addition { protected int addTwoNumbers(int a, int b){ return a+b; } } ``` `Test.java` ```java package xyzpackage; import abcpackage.*; class Test extends Addition{ public static void main(String args[]){ Test obj = new Test(); System.out.println(obj.addTwoNumbers(11, 22)); } } ``` 輸出: ```java 33 ``` ## 4.公共訪問修飾符 可以從任何地方訪問聲明為`public`的成員,方法和類。此修飾符不對訪問權限施加任何限制。 ### java 中的公共訪問修飾符示例 讓我們看一下上面看到的相同的例子,但這次方法`addTwoNumbers()`有`public`修飾符,類`Test`能夠訪問這個方法,甚至不需要擴展`Addition`類。這是因為公共修飾符隨處可見。 `Addition.java` ```java package abcpackage; public class Addition { public int addTwoNumbers(int a, int b){ return a+b; } } ``` `Test.java` ```java package xyzpackage; import abcpackage.*; class Test{ public static void main(String args[]){ Addition obj = new Addition(); System.out.println(obj.addTwoNumbers(100, 1)); } } ``` 輸出: ```java 101 ``` 讓我們以表格形式查看這些訪問修飾符的范圍: ## 表格形式的訪問修飾符的范圍 ```java ------------+-------+---------+--------------+--------------+-------- | Class | Package | Subclass | Subclass |Outside| | | |(same package)|(diff package)|Class | ————————————+———————+—————————+——————————----+—————————----—+———————— public | Yes | Yes | Yes | Yes | Yes | ————————————+———————+—————————+—————————----—+—————————----—+———————— protected | Yes | Yes | Yes | Yes | No | ————————————+———————+—————————+————————----——+————————----——+———————— default | Yes | Yes | Yes | No | No | ————————————+———————+—————————+————————----——+————————----——+———————— private | Yes | No | No | No | No | ------------+-------+---------+--------------+--------------+-------- ```
                  <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>

                              哎呀哎呀视频在线观看