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