HOWTO · Java

Java 中的預設訪問修飾符

本文介紹 Java 中的預設訪問修飾符

本頁內容

在本教程中,我們將討論 Java 中的預設訪問修飾符。顧名思義,當我們不使用變數或函式指定任何人時,使用訪問修飾符。

Java 中的預設訪問修飾符

Java 中有四種型別的 access 修飾符,private、protected、public 和 default。要理解 default access 修飾符,我們需要知道為什麼我們需要它以及不同條件下的其他修飾符。

private access 修飾符是最嚴格的,因為它只允許訪問同一個類。當我們不知道 class 變數或函式將不會在我們所在的類之外的任何其他地方使用時,我們會使用它。

protected access 修飾符允許在類或同一個包內訪問,但只有其他包的子類可以訪問。

當我們希望它對包中的所有類都可用但不希望任何其他包訪問時使用它。

正如你所猜測的,public access 修飾符允許全域性訪問,這意味著我們可以在任何地方訪問它,甚至可以從其他包訪問。

當我們不使用上述任何內容時,default access 修飾符就會發揮作用。它的訪問級別僅限於同一個包,其他包即使建立子類也無法訪問。

讓我們看一個 default access 修飾符的示例以及它是如何工作的。我們有兩個類,ExampleClass1 和 ExampleClass2。第一個類包含一個沒有任何訪問修飾符的變數,稱為 randomString。

現在在 ExampleClass2 類中,我們建立一個函式並通過建立 ExampleClass1 的物件來訪問 randomString 變數。我們可以做到,而且沒有錯誤。發生這種情況是因為這兩個類都在同一個包中。

注意類頂部的包名稱 com.package。

在 Java 中使用 ExampleClass1

package com.tutorial;

public class ExampleClass1 {
  String randomString = "This is a string from Example Class1";

  public static void main(String[] args) {
    String getReturnedString = new ExampleClass2().functionWithDefaultAccessModifier();
    System.out.println(getReturnedString);
  }
}

在 Java 中使用 ExampleClass2

package com.tutorial;

public class ExampleClass2 {
  String functionWithDefaultAccessModifier() {
    return new ExampleClass1().randomString;
  }
}

輸出:

This is a string from Example Class1

在上述場景中,可以從同一包中的另一個類訪問 randomString。

儘管如此,當我們嘗試從位於另一個包 com.tutorial2 中的類訪問位於 com.tutorial 包中的 ExampleClass1 的 randomString 變數時,IDE 會丟擲錯誤說 randomString 不是公共的,不能從它的包外部訪問。