Java中public、private、protected、默認四種訪問權限

java的訪問權限有四種,public,protected,默認,private

四種權限作用圖。Y代表可以訪問到。

在這裏插入圖片描述

類的成員方法的訪問權限:
其從語法角度來講,這寫訪問權限控制符作用於類的方法和作用於類的屬性上的效果是一樣的。

public:所有類可見。
private:只有同一類內部的方法可見,在有就是內部類也可以訪問到。
默認(friendly):包內可見。
protected:繼承可見。
類成員變量的訪問權限:
public:緊接public的屬性任何類都可以訪問到。可以直接使用ClassName.propertyName。但是從類的封裝性上來考慮將一個類的屬性定義成public一般很少使用,
在定義靜態常量的時候通暢會這樣定義。如:public static final int PAGE_SIZE=10;
private:只有類本身內部的方法可以訪問類的private屬性,當然內部類也可以訪問其外部類的private成員的。(屬性和方法)
默認(friendly):包級可見,同一個包內的類可以訪問到這個屬性,可以直接使用className.propertyName來訪問,但是從類的封裝性特性來說很少這樣使用類的屬性的。
protected:關鍵字所處理的是所謂“繼承”的觀念。對於同一包的其他類,protected=默認,其它類可訪問protected.對於不同包的類,如果存在繼承關係,而baseClass存在protected屬性,則可以被其自繼承,而不同包的其他類 則不能訪問類的protected屬性。
說明:
1、每個編譯單元(類文件)都僅能有一個public class
2、public class的名稱(包含大小寫)必須和其類文件同名。
3、一個類文件(*.java)中可以不存在public class。
這種形式的存在的場景:如果我們在某個包內撰寫一個class,僅僅是爲了配合同包內的其他類工作,而且
我們不想再爲了撰寫說明文檔給客戶(不一定是現實意義的客戶,可能是調用這個類的類)看而傷腦筋,而且有可能過一段時間之後 有可能會徹底改變原有的做法,並完全捨棄舊版本,以全新的版本代替。
4、class不可以是private和protected。(除了內部類之外)
5、如果不希望那個任何產生某個class的對象,可以將該類得所有構造函數設置成private。但是即使這樣也可以生成該類的對象,就是class的static的成員(屬性和方法)可以辦到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章