Java基礎詳解 (一)Java的類成員訪問權限修飾詞(以及類訪問權限)


   在一個類的內部,其成員(包括成員變量和成員函數)能否被其他類所訪問,取決於該成員的修飾詞。Java的類成員訪問權限修飾詞有四類:private,無(默認情況下),protected和public。其權限控制如下表所示:

   

修飾詞 本類 同一個包的類 繼承類 其他類
private × × ×
無(默認) × ×
protected ×
public

    其中,默認情況下沒有任何修飾詞,這樣的類成員具有“包訪問權”,即位於同一個包中的類對其有訪問權;而protected為“繼承訪問權”,即該類的子類對其具有訪問權(同時,位於同一個包中的類也對其具有訪問權)。

    而對於Java中的“類”(不是其內部成員,兩者要區分開),其訪問權限修飾詞僅有public和“無”(即包訪問權)兩種,而沒有private和protected(有 一個特例,就是“內部類”,其可以是private或protected的)。所以對於類的訪問權限,你僅有兩個選擇:包訪問權或是public。如果你 不希望其他任何人對該類擁有訪問權,你可以把所有的構造器都指定為private,從而阻止任何人創建該類的對象。但是有一個例外,就是在該類的 static成員內部進行創建。如:

    class Soup {
       // private Constructor!
       private Soup() {}
       // Allow creation via static method:
       public static Soup makeSoup() {
           return new Soup();
       }
    }

    另外,如果一個類的訪問權限為“包訪問權”,並且其內部有一個static的成員為public的話,則其他包中的類仍舊可以訪問該static成員,哪怕它們並不能生成該類的對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM