Java中類名與檔名的關係

ForTechnology發表於2012-01-31
Java中類名與檔名的關係
一個 .java 檔案,可以有多個類(最多有一個新增public修飾符,其他的類不能新增private之類的修飾
符),但是檔名只能有一個,用哪一個類名來充當檔名呢?

其實檔名是無所謂的,因為將來用 javac 進行編譯的時候,最終會生成多個 .class 檔案,每一個類
對應個 .class 檔案。執行時只要執行對應的 .class 檔案就可以了,這時 .java 檔案就顯得沒什麼用
了( 執行時不需要 ),那還管它叫什麼名字。

但是當你的類被 public 修飾時,此時檔名必須和該類保持一致(例如 public class A{} 只能放在
 A.java 檔案中,不然在用 javac 編譯時會提示錯誤:類 A 是公共的,應在名為 A.java 的檔案中宣告)。
也就是說在同一個 .java 檔案中,不應該出現2個或2個以上的 public class 。如果有一個public cl
ass類,就應該讓檔名和此類名相同;那如果沒有呢,即所有的 class 都沒有修飾符,那麼可以給該
檔案隨便
起名字,甚至可以不和任意一個類同名,哪怕是漢字名稱都可以,但是字尾還是要有.java 的 ( 哈哈,
不信就試試 ) 。

注:有很多初學者 ( 我也是 ) 可能會認為檔名應該也和 main 方法所在類有關係,其實不然。ma
in 方法只是程式的一個入口,老師講“一個程式只能有一個入口”,好象是在說只能有一個 main 方法
,其實,只要你高興,就可以在所有類裡都寫上 main 方法,給程式提供N多個入口,但是最後你執行
程式的時候也只能從其中的一個入口進去,這就是 main 的作用( 程式入口 )。(這也就是為什麼你會
發現,程式設計師在做單元測試時,會往自己做的很多類裡面新增 main 方法,因為他要為自己做的東西添
加執行入口,從而能方便測試。)

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


---------------------------------------------------------------------------------------
----
-----------------------------------------------------------------------------------


問題一:如果類前面不加任何訪問修飾符,則預設的訪問許可權是什麼(可否被其它包中它的子類所訪問?)
問題二:如果類成員變數前不加任何訪問修飾符,其預設訪問許可權是什麼?
問題三:如果類成員方法前不加任何訪問修飾符,其預設訪問許可權是什麼?



類、類成員沒有修飾符:friendly:

只有本類和同一包中的類可以訪問,其他沒有訪問許可權


如果一個類的成員沒有任何許可權修飾,那麼它門就是預設包訪問許可權,用friendly來表示,注意frien
dly不是Java中的關鍵字,這裡是個人喜歡的方式用它表示而已。同一個包內其它類可以訪問,但包外
就不可以。對於同一個資料夾下的、沒有用package的classes,Java會自動將這些classes初見為隸屬
於該目錄的defaultpackage,可以相互呼叫class中的friendly成員。如兩個class分別在同一個檔案
夾的兩個檔案中,雖然沒有引入package,但隸屬於相同的defaultpackage。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25897606/viewspace-715300/,如需轉載,請註明出處,否則將追究法律責任。

相關文章