爲何一個java源文件中只能有一個public類

 

問題:一個".java"源文件中是否能夠包括多個類(不是內部類)?有什麼限制?java

  答案:能夠有多個類,但只能有一個public的類,而且public的類名必須與文件名相一致。一個文件中能夠只有非public類,若是隻有一個非public類,此類能夠跟文件名不一樣。編程

 

爲何一個java源文件中只能有一個public類?spa

  在java編程思想(第四版)一書中有這樣3段話(6.4 類的訪問權限):blog

  1.每一個編譯單元(文件)都只能有一個public類,這表示,每一個編譯單元都有單一的公共接口,用public類來表現。該接口能夠按要求包含衆多的支持包訪問權限的類。若是在某個編譯單元內有一個以上的public類,編譯器就會給出錯誤信息。接口

  2.public類的名稱必須徹底與含有該編譯單元的文件名相同,包含大小寫。若是不匹配,一樣將獲得編譯錯誤。編譯器

  3.雖然不是很經常使用,但編譯單元內徹底不帶public類也是可能的。在這種狀況下,能夠隨意對文件命名。io

 

當java源文件不存在public類時,會出現什麼狀況?編譯

  

  此時程序編譯經過,在相應路徑下產生了三個.class文件。直接點擊運行,程序是不能運行的,咱們須要鼠標右鍵點擊程序----->Run As----->Java Aplication----->選數據來源
class

 

我的總結:權限

  一個編譯單元(java文件)能夠存在多個類,在編譯時產生多個不一樣的.class文件,.class文件即是程序運行的數據來源。java將public類做爲每一個編譯單元的數據接口,只能有一個,否則不能處理存在多個類的java文件。當一個編譯單元(java文件)有多個非public類時,運行時須要對數據來源進行選擇。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---恢復內容結束---

相關文章
相關標籤/搜索