首頁 > 手機軟體

java中4種修飾符存取許可權的區別及詳解全過程

2019-12-11 01:53:50

    java中4中修飾符分別為public、protect、default、private,他們這就說明了物件導向的封裝性,所以我們要適用他們盡可能的讓許可權降到最低,從而安全性提高。

    下面詳細講述下它們的存取許可權問題。(同一個類中除內部類外所有修飾符都是可以存取的,所以下面排除這種情況。)

    首先在這裡把它們的存取許可權表示出來:

    存取許可權   類   包  子類  其他包

    public     ∨   ∨   ∨     ∨

    protect    ∨   ∨   ∨     ×

    default    ∨   ∨   ×     ×

    private    ∨   ×   ×     ×

    下面做進一步說明java中4種修飾符存取許可權的區別及詳解全過程:

1

首先,說明public的許可權問題,定義4個類Person、People、Student、Computer,分別比較本類、同包、子類、其他包的區別。

這裡要注意:當重寫父類別成員函數時,子類的成員函數不能比父類別的成員函數許可權小,一般重寫把許可權定義相同即可。

程式碼如圖所示:




2

上邊把類都建好了,然後開始測試,如果均能編譯通過,就說明用public修飾的類在本類、同包、子類、其他包中互相存取都是可以的。測試結果如下:(事實證明可以存取)


3

再來說明protect許可權問題,同樣定義4個類Person、People、Student、Computer,分別比較本類、同包、子類、其他包的區別。

這裡要注意:public可以修飾任何類而且類名要與檔案名相同,protected不可以修飾類。

Person程式碼如圖所示,其他3個類同上:


4

同樣開始測試protected許可權問題,如果Person、People、Student能編譯通過,就說明用protected修飾的類在本類、同包、子類中互相存取都是可以的,而Computer編譯不通過說明protected不可以在包外沒有繼承關係的類中互相存取。測試結果如下:


5

接著說明default許可權問題,同樣定義4個類Person、People、Student、Computer,分別比較本類、同包、子類、其他包的區別。

這裡要注意:default(不寫預設指定default)同public一樣可以修飾任何類而且類名要與檔案名相同。

Person程式碼如圖所示,其他3個類同上:


6

繼續開始測試default許可權問題,如果Person、People能編譯通過,就說明用default修飾的類在本類、同包中互相存取都是可以的,而Student、Computer編譯不通過說明default不可以在包外不管有沒有繼承關係的類都不可以互相存取。測試結果如下:



7

最後說明private許可權問題,同樣定義4個類Person、People、Student、Computer,分別比較本類、同包、子類、其他包的區別。

這裡要注意:private同protected一樣不可以修飾類。

Person程式碼如圖所示,其他3個類同上:


8

最後測試private許可權問題,private意思是私有的,如果Person能編譯通過而People、Student、Computer編譯不通過,就說明用private修飾的類只能在本類中存取。測試結果如下:


9

綜上所述,java中4種修飾符存取許可權的區別及詳解全過程就此演示完了,再一次說明java語言的嚴謹性和安全性,我們在以後使用這4中修飾符時建立一個類,這個類的許可權盡量要小,這樣才能減少漏洞和提高安全性,從而體現java物件導向的封裝性。

最後如圖再回憶一下java中4個修飾符的存取許可權:



IT145.com E-mail:sddin#qq.com