<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://www.programiz.com/java-programming/access-modifiers](https://www.programiz.com/java-programming/access-modifiers) #### 在本教程中,我們將在示例的幫助下了解 Java 訪問修飾符,其類型以及如何使用它們。 ## 什么是訪問修飾符? 在 Java 中,訪問修飾符用于設置類,接口,變量,方法,構造器,數據成員和設置器方法的可見性(可見性)。 例如, ```java class Animal { public void method1() {...} private void method2() {...} } ``` 在上面的示例中,我們聲明了 2 個方法:`method1()`和`method2()`。 這里, * `method1`是`public` - 這意味著可以由其他類訪問。 * `method2`為`private` - 這意味著其他類無法訪問它。 注意關鍵字`public`和`private`。 這些是 Java 中的訪問修飾符。 它們也稱為可見性修改器。 **注意**:您無法設置獲取器方法的訪問修飾符。 * * * ## 訪問修飾符的類型 在學習訪問修飾符的類型之前,請確保您了解 [Java 包](/java-programming/packages-import "Java Packages")。 Java 中有四個訪問修飾符關鍵字,它們是: | **修飾符** | **說明** | | --- | --- | | 默認 | 聲明僅在包中可見(包私有) | | `private` | 聲明僅在類中可見 | | `protected` | 聲明在包或所有子類中均可見 | | `public` | 聲明隨處可見 | * * * ## 默認訪問修飾符 如果我們未為類,方法,變量等明確指定任何訪問修飾符,則默認情況下將考慮默認訪問修飾符。 例如, ```java package defaultPackage; class Logger { void message(){ System.out.println("This is a message"); } } ``` 此處,`Logger`類具有默認的訪問修飾符。 并且該類對屬于`defaultPackage`包的所有類都是可見的。 但是,如果嘗試在`defaultPackage`之外的另一個類中使用`Logger`類,則會出現編譯錯誤。 * * * ## 私有訪問修飾符 聲明變量和方法`private`時,不能在類外部訪問它們。 例如, ```java class Data { // private variable private String name; } public class Main { public static void main(String[] main){ // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; } } ``` 在上面的示例中,我們聲明了一個名為`name`的私有變量,和一個名為`display()`的私有方法。 運行程序時,將出現以下錯誤: ```java Main.java:18: error: name has private access in Data d.name = "Programiz"; ^ ``` 產生錯誤是因為我們試圖從`Main`類訪問`Data`類的私有變量和私有方法。 您可能想知道我們是否需要訪問這些私有變量。 在這種情況下,我們可以使用獲取器和設置器方法。 例如, ```java class Data { private String name; // getter method public String getName() { return this.name; } // setter method public void setName(String name) { this.name= name; } } public class Main { public static void main(String[] main){ Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); } } ``` **輸出**: ```java The name is Programiz ``` 在上面的示例中,我們有一個名為`name`的私有變量。 為了從外部類訪問變量,我們使用了方法:`getName()`和`setName()`。 這些方法在 Java 中稱為獲取器和設置器。 在這里,我們使用了設置器方法(`setName()`)將值分配給變量,并使用獲取器方法(`getName()`)來訪問變量。 我們在`setName()`中使用了`this`關鍵字來引用該類的變量。 要了解有關`this`關鍵字的更多信息,請訪問 [Java `this`關鍵字](/java-programming/this-keyword "Java this Keyword")。 **注意**:我們無法在 Java 中聲明私有的類和接口。 但是,可以將嵌套類聲明為私有。 要了解更多信息,請訪問 [Java 嵌套和內部類](/java-programming/nested-inner-class "Java Nested and Inner Class")。 * * * ### 受保護訪問修飾符 當方法和數據成員被聲明為`protected`時,我們可以在同一包中以及從子類中訪問它們。 例如, ```java class Animal { // protected method protected void display() { System.out.println("I am an animal"); } } class Dog extends Animal { public static void main(String[] args) { // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); } } ``` **輸出**: ```java I am an animal ``` 在上面的示例中,我們在`Animal`類中有一個名為`display()`的受保護方法。`Animal`類由`Dog`類繼承。 要了解有關繼承的更多信息,請訪問 [Java 繼承](/java-programming/inheritance "Java Inheritance")。 然后,我們創建了`Dog`類的對象`Dog`。 使用該對象,我們嘗試訪問父類的受保護方法。 由于可以從子類訪問受保護的方法,因此我們可以從`Dog`類訪問`Animal`類的方法。 **注意**:我們無法在 Java 中聲明類或接口`protected`。 * * * ### 公共訪問修飾符 當方法,變量,類等被聲明為`public`時,我們可以從任何地方訪問它們。 公共訪問修飾符沒有范圍限制。 例如, ```java // Animal.java file // public class public class Animal { // public variable public int legCount; // public method public void display() { System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); } } // Main.java public class Main { public static void main( String[] args ) { // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); } } ``` **輸出**: ```java I am an animal. I have 4 legs. ``` 這里, * 可從`Main`類訪問公共類`Animal`。 * 可從`Main`類訪問公共變量`legCount`。 * 可從`Main`類訪問公共方法`display()`。 * * * ## 一圖概述訪問修飾符 ![Accessibility of all Access Modifiers in Java](https://img.kancloud.cn/1c/13/1c13137d63a6b1dc4926a1b354dc07df_512x512.png "Accessibility of all Access Modifiers in Java") Java 中所有訪問修飾符的可見性 訪問修飾符主要用于封裝。 我可以幫助我們控制程序的哪些部分可以訪問類的成員。 這樣就可以防止濫用數據。 要了解有關封裝的更多信息,請訪問 [Java 封裝](/java-programming/encapsulation "Java Encapsulation")。
                  <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>

                              哎呀哎呀视频在线观看