【Java小疑問】java原始檔當中可以有多個類,但是為什麼只能有一個public類呢?

love_Aym發表於2018-06-05

  在 Java 中,同一個類檔案,僅可存在於一個 public 修飾類,且該 .java 檔案要與public 修飾類同名,否則將會報錯。原因如下:


1、只有一個public類


第一、每個編譯單元(檔案)只能有一個public 類。這麼做的意思是,每個編譯單元只能有一個公開的介面,而這個介面就由其public 類來表示。

第二、java程式的入口是main方法,所以被定為public的這個類裡一定是含有main方法的類,而且該類的名稱要和檔名一致,因為虛擬機器開始要找main的。

第三、你可以根據需要,往這個檔案裡面新增任意多個提供輔助功能的public 許可權的類。但是如果這個編譯單元裡面有兩個或兩個以上的public 類的話,編譯器就會報錯。

第四、在標準的java程式碼編寫時,無論程式碼量多少,最好一個原始檔裡只有一個類或介面(介面也要單獨寫在一個原始檔裡),因為JAVA是物件導向的語言,每個類都是抽象的結果,所以每個類都要單獨寫在一個原始檔裡。

第五、編譯單元裡面可以沒有public 類,指的是沒有公開的介面,但是可以在同一個包內訪問的;public的意思是在包內包外均可訪問。雖然這種情況不常見,但卻是可以的。這時,你就能隨意為檔案起名字了。



2、public 類的名字必須和這個編譯單元的檔名完全相同,包括大小寫。

第一、如果你不遵守,編譯器又要報錯了。

首先Java是被解釋執行的。它在執行時並不是將所有的class檔案全都放到記憶體中。而是在遇到import的時候才去相應的檔案目錄找相應的class檔案。

第二、對於一個public類,它是可以被專案中任何一個類所引用的,只需在使用它前import一下它所對應的class檔案即可。將類名與檔名一一對應就可以方便虛擬機器在相應的路徑(包名)中找到相應的類的資訊。如果不這麼做的話,就很難去找,而且開銷也會很大。


3、public類裡是不是一定要有main函式

1:不一定要有main,一個專案中可只有一個main
2:控制檯應用中,必須要有main方法,該方法將作為程式執行的入口.

3:web應用中可以不要main,因為IE預設有main方法.


4、Java中可以有多個main函式嗎?

   每一個java檔案都會有一個public static void main(String[] args)作為程式作為入口,一個類有且只有一個,但是可以有與他不同的,比如:void main(),void main(int a),都是可以的。
   在不同類中,是可以有多個public static void main(String[] args),但是程式不會以另一個作為程式入口,區別就在於class前的public,第二個class是不允許用public修飾的。

相關文章