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 訪問修飾符,並在後面的部分中透過相應的示例詳細解釋了它們。最後,我們討論了它們彼此的不同之處。