private、public、protected 這三者大家都不會感到陌生。 訪問許可權的修飾詞,給類中的每一個成員定義一個使用範圍 ,但是在使用的時候,可能有人不會太在意他們的區分,在某些情況下,不進行區分也許都是可行的,但是卻不一定是最好。可能,一時也不會暴露出什麼問題,但是,當項目變得龐大而複雜 ...
private、public、protected 這三者大家都不會感到陌生。訪問許可權的修飾詞,給類中的每一個成員定義一個使用範圍,但是在使用的時候,可能有人不會太在意他們的區分,在某些情況下,不進行區分也許都是可行的,但是卻不一定是最好。可能,一時也不會暴露出什麼問題,但是,當項目變得龐大而複雜的時候,這樣做就有可能留下了隱患或者缺陷。這雖然是一個細節,但是細節往往就是決定成敗的因素。所以,還是有必要理清一下它們的概念和區分,以便在實際使用中,應用到位。
修飾詞的區分
預設狀態下
在新定義一個成員的時候,如果沒有設定一個訪問許可權,那麼它預設是包訪問許可權(有時也表示為friendly),即在同一個package里都能進行訪問、使用。
public
public的許可權是介面訪問許可權。即在同一目錄下,只要聲明瞭該對象,就可以使用它。
private
private的訪問許可權是私有的,只有在同一個類下,其他類是無法調用被定義為private的成員的。這樣的定義可以很好地隱藏底層的具體實現,比如如下用法:
public class A{
private A(){
}
static A getA(){
return new A();
}
}
public class Main(){
public static void main(String[] args){
A a = new A();
a.getA();
}
}
protected
首先,它的定義是包訪問許可權,即同一個包里,它是可以被訪問的;其次,繼承的時候它也將被繼承。這裡需要說明的是,private在繼承的時候是不會被繼承的,而public是只要在同一個目錄下就能訪問的,相對來說,protected會比較有意思一點。
總結
其實,用一張表格就可以很清晰的區分它們。
修飾詞 | 當前類 | 同一個package里 | 子類 | 其他package里 |
---|---|---|---|---|
private | √ | X | X | X |
預設預設 | √ | √ | X | X |
protecte | √ | √ | √ | X |
public | √ | √ | √ | √ |
在實際應用中,我們還是要根據實際情況進行選擇,不能圖方便省事給個能用的就行。。以上內容來源於《JAVA編程思想》第四版總結出來的,如果不正確的地方歡迎指出。
更多精彩內容可關註我的博客,更新相對及時傳送門