Java的外部類為什么不能使用private、protected進行修飾


對於頂級類(外部類)來說,只有兩種修飾符:public和默認(default)。因為外部類的上一單元是包,所以外部類只有兩個作用域:同包,任何位置。因此,只需要兩種控制權限:包控制權限和公開訪問權限,也就對應兩種控制修飾符:public和默認(default)。

如果類使用了private修飾符,說明是個內部類。內部類的上一級是外部類,那么對應的有四種訪問控制修飾符:本類(private),同包(default),父子類(protected),任何位置(public)。當一個內部類使用了private修飾后,只能在該類的外部類內部使用。

上面這些都是平時使用司空見慣的,但是為什么是這種情況呢?

可以想一下,一個java項目是不可能在一個class里面完成的。mvc模式中,是把類分為三層,一層層調用類。如果定義為私有的和受保護的就無法調用。換句話說,對於一個java文件,要么就是自己單獨運行,要么就是被其他程序作為庫調用,如果一個java文件的類被private修飾,那么是不是其他的程序或是類是無法使用它的,那么他作為一個單獨的文件就沒啥用了。如果它作為單個文件運行,類加載怎么找到它呢,因為它對外不可見。同時,也失去了類的存在意義。因此,類只有public和默認修飾符。


免責聲明!

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



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