Java 中的 protected 和 package 訪問修飾符


protected 和 package 訪問修飾符決定了如何訪問類或方法的成員。這些修飾符在宣告成員時附加到成員上。我們知道,這些訪問修飾符在 Java 面向物件的概念(如封裝、多型和繼承)中起著重要作用。它有助於防止濫用成員提供的功能。我們將嘗試透過示例程式來理解 Java 中的 protected 和 package 訪問修飾符。

Java 中的訪問修飾符

Protected 訪問修飾符

它主要用於繼承的情況下,以控制對父類成員和相應子類成員的訪問。它允許訪問包外的元素,但僅限於類的直接子類。這裡,包是容納一組類的容器。

一些 protected 訪問修飾符的示例:

protected int i1 = 108;
protected double d2 = 6.55;

這裡,變數被宣告為 protected。

示例

以下示例說明了在 Java 中使用 protected 方法。

class Pack {  
   protected void prnt() {
      String msg = "I am accessing a protected method";
      System.out.print(msg);
   }  
}  
public class ClassShow extends Pack {  
   public static void main(String args[]) { 
      // creating object of child class
      ClassShow obj = new ClassShow();  
      // method calling through object of child class
      obj.prnt();  
   }  
} 

輸出

I am accessing a protected method

在上面的程式碼中,類 'Pack' 是 'ClassShow' 的父類。在父類中,我們聲明瞭一個名為 'prnt()' 的 protected 方法來列印一條簡單的訊息。在子類 'ClassShow' 的 main() 方法中,我們定義了一個子類 'ClassShow' 的物件來呼叫 protected 方法 'prnt()'。

Package 訪問修飾符

它也稱為預設訪問修飾符。當我們沒有顯式地為類和方法指定任何訪問說明符時,Java 編譯器會自動將其視為預設的或包成員。我們可以在子類以及同一包內的其他類中訪問這些成員。

一些 package 訪問修飾符的示例:

int i1 = 108;
double d2 = 6.55;

這裡,變數被宣告為預設的或包成員。

示例

以下示例說明了包成員在 Java 中的工作方式。

public class Overflw {
   static void methodA(int data1) {
      // default method 1
      data1++;
      methodB(data1); 
      // calling methodB
   }
   static void methodB(int data1) {
      // default method 2
      data1++;
      int data2 = 5; 
      // default member variable
      int mult = data1 * data2;
      System.out.println("Value of data1 and data2 multiplication is: " + mult);
   }
   public static void main(String []args) {
      int data1 = 0;  
      // variable with default modifier
      methodA(data1); 
      // calling methodA
   }
}

輸出

Value of data1 and data2 multiplication is: 10

我們建立了兩個名為 'methodA' 和 'methodB' 的帶引數的使用者定義方法。在 main 方法中,我們宣告並初始化一個整數變數 'data1' 為 0,然後將其作為引數傳遞給 'methodA'。現在,'methodA' 呼叫 'methodB',並使用 'data1' 的增量值。在 'methodB' 內部,我們計算乘法並列印結果。

Protected 與 Package 訪問修飾符的比較

從上面的討論中,我們可以得出 Protected 和 Package 訪問修飾符之間以下區別:

Protected

Package

我們使用 protected 關鍵字來指定成員被設定為 protected。

它不需要任何特定的關鍵字。

protected 成員在包內以及其他包中都是可訪問的。但在其他包的情況下,它只能被繼承類訪問。

package 訪問修飾符比 protected 更受限制,因為包成員只能被同一包訪問。

我們不能將類定義為 protected。

我們可以定義一個預設類。

它僅適用於成員級別。

它適用於頂級和成員級別。

結論

我們首先定義了 protected 和 package 訪問修飾符,並在後面的部分中透過相應的示例詳細解釋了它們。最後,我們討論了它們彼此的不同之處。

更新於:2023年5月16日

534 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告