天天看點

Java 通路修飾符與非通路修飾符 | Java核心知識點整理

本小節詳細介紹了 Java 通路修飾符。它們控制 Java 類及其成員(函數和資料)的可見性。它們是公共的、私有的和受保護的。

但是,當沒有修飾符存在時,Java 也實作了預設情況。這意味着一個類、它的函數、字段隻能被同一子產品中的其他類通路。

順便說一下,Java 中主要有四種類型的通路修飾符。讓我們在示例的幫助下詳細讨論它們中的每一個。

⏰1.Java 通路修飾符示例解釋

???? 2. default 通路修飾符

???? 3. private 通路修飾符

???? 4. public 通路修飾符

???? 5. Protected 通路修飾符

???? 非通路修飾符

???? 幾個關鍵點

???? 結尾想說的

以下是我們今天要讨論的要點。

private:在目前對象中可以使用,修飾變量和方法

default:(預設,什麼都不寫)在同一個包可以使用,修飾變量、方法

protected:對同一個包内的類和所有子類能使用。修飾:變量、方法

public:對所有類可以使用,修飾類、接口(預設)、變量、方法

-

對外完全可見

對本包和所有子類可見

僅對本包可見

僅對本類可見

通路控制修飾符

Public

Protected

default

Private

同一包中的其它類

同一包中的子類

不同包中的其它類

不同包中的子類

修飾符介紹

Java 提供了多種機制來控制類或變量的對象的可見性。它們在程式設計術語中被稱為修飾符。

它們可能屬于以下類别之一:

通路修飾符

非通路修飾符

此外,Java 支援四種主要的通路修飾符。而非通路說明符在 Java 中有 7 種類型。您可以使用它們來指定對類、方法、構造函數或變量的通路級别。

Java 中的四個主要通路說明符是:

default 預設通路修飾符

private 私有通路修飾符

public 公共通路修飾符

Protected 受保護通路修飾符

根據 Java 繼承概念:

超類的公共方法也必須在子類中具有相同的級别。

子類将無法使用私有方法。

超類中的受保護方法在子類中是公共的或受保護的。

預設情況下,任何包都可以通路預設通路修飾符。程式員無需指定任何關鍵字即可使用預設通路修飾符。

這意味着程式員不需要顯式指定類、方法或構造函數預設值。

預設情況下,可以從同一包中存在的任何其他“類”通路類或方法。我們通常不使用任何通路修飾符來定義變量和方法。

下面的示例顯示了一個預設類:

如您所料,輸出為:

Java 通路修飾符與非通路修飾符 | Java核心知識點整理

顧名思義,私有通路修飾符隻限制對定義的“類”的通路。借助“private”關鍵字,我們可以實作資料封裝的真正概念。這意味着隐藏外部世界的私人成員。

此外,請注意所有使用者定義的變量、構造函數或方法也可以具有私有通路權限。檢查以下幾點:

标記為私有的函數隻能在類中通路。

您不能将頂級類或接口聲明為私有。此外,如果是這樣,那麼它将毫無用處,因為沒有人可以通路它。

程式員必須定義一個 getter 或 setter 來通路私有方法或變量。

下面的示例将幫助您可視化私有方法的 getter:

在上面的示例中,getPrint() 是私有函數 PRINT() 的 getter 函數。輸出是:

如下圖

Java 通路修飾符與非通路修飾符 | Java核心知識點整理

public 修飾符在 Java 應用程式中最常見。它們意味着可以在整個包中通路任何公共類、方法、變量、接口或構造函數。

在另一個包中使用公共類之前,必須先導入它。

如果你繼承了一個公共類,那麼預設情況下子類将擁有它的所有方法和變量。

為了您的資訊,Java 中的“main()”方法是公開的。

輸出是

Java 通路修飾符與非通路修飾符 | Java核心知識點整理

具有受保護通路權限的對象或方法僅對包和子類可見。

以下是詳細說明确切行為的幾點:

這些方法、變量或構造函數隻能在包内通路,也可用于所有子類。

protected 關鍵字不适用于任何類或接口。

接口方法或變量不能具有受保護的通路權限。

看下面的例子:

輸出:

Java 通路修飾符與非通路修飾符 | Java核心知識點整理
Java 通路修飾符與非通路修飾符 | Java核心知識點整理

在 Java 程式設計中,您将獲得七個非通路修飾符。您可以在它們前面加上類/方法/變量/構造函數并在程式中使用它們。

這裡有一些要點可以幫助您了解何時應該使用特定的修飾符。

Static - 這意味着某些東西與類直接相關。

Final – 表示對象是不可變的。

Abstract - 這意味着您需要子類來建立對象。

Synchronized - 表示一次隻有一個線程可以執行一個方法。

Transient – 意味着在序列化過程中排除某些東西。

Volatile – 表示不同的線程可以修改變量的值。

Native – 它表明該方法在使用 JNI 或 JNA 的本機代碼中可用。

以下是對上述概念的快速總結。它将幫助您更好地使用 Java 中的通路修飾符。

如果您正在編寫一個類以供重用,則将最嚴格的通路級别應用于邏輯上的那些字段。

此外,将私有通路設為您的預設選擇,直到出現可靠的相反情況。

此外,永遠不要将常量辨別符标記為public。

我希望你喜歡這篇文章。如果你喜歡它,也分享給你的朋友。有未提及的内容或想分享您的想法請随時在下面發表評論,我會盡快回複您。????

我已經寫了很長一段時間的技術部落格,并且主要通過CSDN發表,這是我的一篇python基礎教程。我喜歡通過文章分享技術與快樂。以了解更多資訊。希望你們會喜歡!這裡彙總了我的全部原創及作品源碼:GitHub