天天看點

Java 權限修飾符詳解

java語言中有四種通路權限的等級控制,從權限的大到小順序依次是:

public:對所有通路者都是可見

protected:同包以及子類可以通路

package-private:同一包内可以通路

private:隻對本類内部成員的通路是可見 

其中package-private 是預設通路權限即不帶修飾符的情況(預設通路權限有些人上說成可成default 或 friendly 但本人覺得package-private 表達的更直覺)。更直覺的表如下:

通路修飾符 同一個類 同包 不同包,子類 不同包,非子類
private --  -- --
package-       private -- --
protected --
public 

1、外部類(Class)的通路權限修飾符: 

      外部類的通路權限隻有public 與package-private 

package-private(預設):如果一個外部類沒有寫通路權限修飾符,那麼就是package-private的通路權限,同一個包下的類都可以通路到。

public:可以供所有的類通路。 

說明: 

1)、每個類檔案都有且僅能有一個public 外部class 。

2)、public class的名稱必須和其類檔案同名。 

3)、一個類檔案(*.java)中可以沒有public class。 

2、類成員變量、成員方法的通路權限: 

public、private、package-private、protected;

3、内部類通路權限:

内部類可以看成一個外部類的一個成員、隻不過這個類員有點特殊、是一個類。内部類的通路權限同成員變量、成員方法一樣。(public、private、package-private、protected;)