本小節詳細介紹了 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 繼承概念:
超類的公共方法也必須在子類中具有相同的級别。
子類将無法使用私有方法。
超類中的受保護方法在子類中是公共的或受保護的。
預設情況下,任何包都可以通路預設通路修飾符。程式員無需指定任何關鍵字即可使用預設通路修飾符。
這意味着程式員不需要顯式指定類、方法或構造函數預設值。
預設情況下,可以從同一包中存在的任何其他“類”通路類或方法。我們通常不使用任何通路修飾符來定義變量和方法。
下面的示例顯示了一個預設類:
如您所料,輸出為:

顧名思義,私有通路修飾符隻限制對定義的“類”的通路。借助“private”關鍵字,我們可以實作資料封裝的真正概念。這意味着隐藏外部世界的私人成員。
此外,請注意所有使用者定義的變量、構造函數或方法也可以具有私有通路權限。檢查以下幾點:
标記為私有的函數隻能在類中通路。
您不能将頂級類或接口聲明為私有。此外,如果是這樣,那麼它将毫無用處,因為沒有人可以通路它。
程式員必須定義一個 getter 或 setter 來通路私有方法或變量。
下面的示例将幫助您可視化私有方法的 getter:
在上面的示例中,getPrint() 是私有函數 PRINT() 的 getter 函數。輸出是:
如下圖
public 修飾符在 Java 應用程式中最常見。它們意味着可以在整個包中通路任何公共類、方法、變量、接口或構造函數。
在另一個包中使用公共類之前,必須先導入它。
如果你繼承了一個公共類,那麼預設情況下子類将擁有它的所有方法和變量。
為了您的資訊,Java 中的“main()”方法是公開的。
輸出是
具有受保護通路權限的對象或方法僅對包和子類可見。
以下是詳細說明确切行為的幾點:
這些方法、變量或構造函數隻能在包内通路,也可用于所有子類。
protected 關鍵字不适用于任何類或接口。
接口方法或變量不能具有受保護的通路權限。
看下面的例子:
輸出:
在 Java 程式設計中,您将獲得七個非通路修飾符。您可以在它們前面加上類/方法/變量/構造函數并在程式中使用它們。
這裡有一些要點可以幫助您了解何時應該使用特定的修飾符。
Static - 這意味着某些東西與類直接相關。
Final – 表示對象是不可變的。
Abstract - 這意味着您需要子類來建立對象。
Synchronized - 表示一次隻有一個線程可以執行一個方法。
Transient – 意味着在序列化過程中排除某些東西。
Volatile – 表示不同的線程可以修改變量的值。
Native – 它表明該方法在使用 JNI 或 JNA 的本機代碼中可用。
以下是對上述概念的快速總結。它将幫助您更好地使用 Java 中的通路修飾符。
如果您正在編寫一個類以供重用,則将最嚴格的通路級别應用于邏輯上的那些字段。
此外,将私有通路設為您的預設選擇,直到出現可靠的相反情況。
此外,永遠不要将常量辨別符标記為public。
我希望你喜歡這篇文章。如果你喜歡它,也分享給你的朋友。有未提及的内容或想分享您的想法請随時在下面發表評論,我會盡快回複您。????
我已經寫了很長一段時間的技術部落格,并且主要通過CSDN發表,這是我的一篇python基礎教程。我喜歡通過文章分享技術與快樂。以了解更多資訊。希望你們會喜歡!這裡彙總了我的全部原創及作品源碼:GitHub