在Java中,提供了四種訪問權限控制
默認訪問權限(包訪問權限),public,private以及protected。
注意:上述四種訪問權限,只有默認訪問權限和public能夠用來修飾類。修飾類的變量和方法四種權限都可以。(本處所說的類針對的是外部類,不包括內部類)
訪問控制權限(√代表可以訪問)
private | default | protected | public | |
同一類 | √ | √ | √ | √ |
同一包內的類 | √ | √ | √ | |
子類 | √ | √ | ||
其它包內的類 | √ |
修飾類
默認訪問權限(包訪問權限):用來修飾類的話,表示該類只對同一個包中的其他類可見。
public:用來修飾類的話,表示該類對其他所有的類都可見。
修飾類的方法和變量
默認訪問權限(包訪問權限):如果一個類的方法或變量被包訪問權限修飾,也就意味着只能在同一個包中的其他類中顯示地調用該類的方法或者變量,在不同包中的類中不能顯示地調用該類的方法或變量。
private:如果一個類的方法或者變量被private修飾,那么這個類的方法或者變量只能在該類本身中被訪問,在類外以及其他類中都不能顯示地進行訪問。
protected:如果一個類的方法或者變量被protected修飾,對於同一個包的類,這個類的方法或變量是可以被訪問的。對於不同包的類,只有繼承於該類的類才可以訪問到該類的方法或者變量。
public:被public修飾的方法或者變量,在任何地方都是可見的。
拓展:
Java中的包主要是為了防止類文件命名沖突以及方便進行代碼組織和管理;
對於一個Java源代碼文件,如果存在public類的話,只能有一個public類,且此時源代碼文件的名稱必須和public類的名稱完全相同,另外,如果還存在其他類,這些類在包外是不可見的。如果源代碼文件沒有public類,則源代碼文件的名稱可以隨意命名。