這是一道最基礎的java面試題,幾乎是所有學習java的人都知道的問題。
可以有多個類,但只能有一個public的類,並且public的類名必須與文件名相一致。一個文件中可以只有非public類,如果只有一個非public類,此類可以跟文件名不同。
然而知其然,更要知其所以然,這樣才能夠讓我們更加深刻的去理解。
問題一:為什么類之中只能有一個public的類?
每個編譯單元(文件)都只有一個public 類。因為每個編譯單元都只能有一個公共接口,用public類來表現。該接口可以按照要求包含眾多的支持包訪問權限的類。如果有一個以上的public 類,編譯器就會報錯。 並且public類的名稱必須與文件名相同(嚴格區分大小寫)。 當然一個編譯單元內也可以沒有public類。在PUBLIC類中找程序的入口 main函數 你想想如果很多PUBLIC 類,那程序從何運行!
問題二:public 類的名稱為什么要與文件名相等?
首先Java是被解釋執行的。它在運行時並不是將所有的class文件全都放到內存中。而是在遇到import的時候才去相應的文件目錄找相應的class文件。對於一個public類,它是可以被項目中任何一個類所引用的,只需在使用它前import一下它所對應的class文件即可。將類名與文件名一一對應就可以方便虛擬機在相應的路徑(包名)中找到相應的類的信息。如果不這么做的話,就很難去找,而且開銷也會很大。