java中4種修飾符訪問權限的區別及詳解全過程


java中4種修飾符訪問權限的區別及詳解全過程

 

http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html

 

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

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

    首先在這里把它們的訪問權限表示出來:

    訪問權限   類   包  子類  其他包

    public     ∨   ∨   ∨     ∨

    protect    ∨   ∨   ∨     ×

    default    ∨   ∨   ×     ×

    private    ∨   ×   ×     ×

    下面做進一步說明java中4種修飾符訪問權限的區別及詳解全過程:

工具/原料

  • java運行環境

  • Notepad++

方法/步驟

  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個修飾符的訪問權限:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM