天天看點

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成員,哪怕它們并不能生成該類的對象。

    本文轉自 一點點征服   部落格園部落格,原文連結:http://www.cnblogs.com/ldq2016/p/5261345.html,如需轉載請自行聯系原作者