Java的訪問控制修飾符共有4個,分別是public、protected、default、private。下面我們分別進行講解。
private訪問控制
在本章的前面,我們已經明白了private訪問控制符的作用,如果一個成員方法或成員變量名前使用了private訪問控制符,那麼這個成員只能在這個類的內部使用。
注意:不能在方法體內聲明的變量前加private修飾符。
缺省訪問控制
如果一個成員方法或成員變量名前沒有使用任何訪問控制符,我們就稱這個成員是缺省的(default),或是友元的(friendly),或是包類型的(package)。對於缺省訪問控制成員,可以被這個包中的其他類訪問,如果一個子類與父類位於不同的包中,子類也不能訪問父類中的缺省訪問控制成員。
protected訪問控制
如果一個成員方法或成員變量名前使用了protected訪問控制符,那麼這個成員即可以被同一個包中的其他類訪問,也可以被不同包中的子類訪問。
public訪問控制
如果一個成員方法或成員變量名前使用了public訪問控制符,那麼這個成員即可以被所有的類訪問,不管訪問類與被訪問類是否在同一個包中。
最後,我們用一張圖來總結上述訪問控制符的權限。
|
private |
defalut |
protected |
public |
同一類 |
√ |
√ |
√ |
√ |
同一包中的類 |
|
√ |
√ |
√ |
子類 |
|
|
√ |
√ |
其他包中的類 |
|
|
|
√ |
表4.1
4.6.2 類的訪問控制
除了類中的成員有訪問控制外,類本身也有訪問控制,即在定義類的class關鍵字前加上訪問控制符,但類本身只有兩種訪問控制,即public 和默認,父類不能是private和protected,否則子類無法繼承。public修飾的類能被所有的類訪問,默認修飾(即class關鍵字前沒有訪問控制符)的類,只能被同一包中的所有類訪問。
注意:
只要在class之前,沒有使用public修飾符,源文件的名稱可以是一切合法的名稱。帶有public 修飾符的類的類名必須與源文件名相同,而且只有一個。