Java訪問許可權修飾符詳解
阿新 • • 發佈:2019-01-10
Java中的訪問許可權修飾符(Java關鍵字)
今天很皮的發現,自己現在竟然不會玩兒Java基礎了,就翻看了一下自己的筆記,寫一篇文章複習一下!
測試環境:Java執行環境,myEclipse。
測試前準備:實體類包(Student類,Teacher類),測試類包(TestPublic類,TestProtected類,TestPrivate類)。
首先讓我們想想這四種修飾符:public,protected,default(也有叫frendly的,不過兩個都通不過編譯,不寫就是這個修飾符了),private。
測試開始:
修飾類時:當訪問許可權修飾符修飾類的時候,只能使用預設的修飾符和public修飾符,在不適用public的時候在不同的包中不可以訪問到這個類,在Java這種面向物件程式設計的語言來說,應該將類設定成public的類,使用了public修飾的類可以匯入到任何的類中,而不修飾的類只能在本包中使用。不同的包,訪問不到:
修飾其它時:當訪問許可權修飾符修飾成員方法和成員變數的時候,這四種修飾符代表了四種訪問許可權,我們可以開始測試。
1:首先建立實體包和一個測試包,我們在這個entity包中寫一個Student類,其中寫入八個元素,為了測試的方便,我們可以都將其用static進行修飾,四個變數和四個方法分別用不同的修飾符修飾。
2:在測試包中寫TestPublic測試類,可以看到通過類名呼叫的成員變數和成員方法只有public修飾符修飾的通過了編譯。 3:在測試包中寫TestProtected測試類並繼承自Student類,可以看到通過類名呼叫的成員變數和成員方法使用public和protected修飾符修飾的通過了編譯。
4:在實體包中寫TestDefault測試類並繼承自Student類,可以看到通過類名呼叫的成員變數和成員方法只有private修飾符修飾的沒有通過編譯。 5:回到Student實體類中,會發現使用private修飾的成員方法和成員變數被黃線擡起來了,滑鼠懸浮上去,成員變數提示要麼刪除這個變數,要麼提供getter和setter方法,要麼加上註解表示這個成員變數不使用。而成員方法是不可能有getter和setter方法的,這些說明了什麼,說明了private的訪問範圍。
總結如下: 1:public修飾的變數或者方法在不同包中,相同包中,子類中,當前類中都是可以直接訪問的。
2:protected修飾的變數或者方法在相同包中,子類中,當前類中都是可以直接訪問的,在不同包中的類則不能訪問。
3:default(也就是預設的)的變數或者方法在相同包中,當前類中都是可以直接訪問的,在不同包中,即便是子類中也不能訪問。4:private修飾的變數或者方法只能在當前類中都是直接訪問,在不同類中就不能訪問,只能提供向外的公開的方法去呼叫,也就是面向物件的封裝(這裡暫時不提面向物件)。 關係圖如下:
作用域 | 當前類 | 同一包 | 子孫類 | 其它包 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
default(friendly) | √ | √ | ||
private | √ |