天天看點

public class和class的差別

在編寫類的時候可以使用兩種方式定義類:public class定義類和class定義類,那麼這這兩種方式有什麼差別嗎?

如果一個類聲明的時候使用了public class進行了聲明,則類名稱必須與檔案名稱完全一緻,如果類的聲明使用了class的話,則類名稱可以與檔案名稱不一緻。

範例:定義一個類(檔案名稱為:Hello.java)

public class HelloDemo{    //聲明一個類,類名稱的命名規範:所有單詞的首字母大寫
     public static void main(String args[]){    //主方法
         System.out.println("HelloWorld!!!");    //系統輸出,在螢幕上列印
     }
 };      

此類使用public class聲明,類名稱是HelloDemo,但是檔案名稱Hello.java,是以,此時編譯時會出現如下問題:

Hello.java:1 類 HelloDemo 是公共的,應在名為HelloDemo.java檔案中聲明

public class HelloDemo{ //聲明一個類,類名稱的命名規範:所有單詞首字母大寫

以上的錯誤提示表示:因為使用的是public class聲明,是以類名稱應該與檔案名稱完全一緻,即應該使用"HelloDemo.java"表示類的名稱。

如果類的聲明使用了class的話,則類名稱可以與檔案名稱不一緻,但是執行的時候肯定執行的是生成後的名稱。

範例:有如下代碼(檔案名稱為:Hello.java)

class HelloDemo{
     public static void main(String args[]){
         System.out.println("HelloWorld!!!");
     }
 };      

檔案名稱為Hello.java,檔案名稱與類名稱不一緻,但是因為使用了class聲明是以,此時編譯不會産生任何錯誤,但是生成之後的*.class檔案的名稱是和class聲明的類名稱完全一緻的:HelloDemo.class

執行的時候不能再執行java Hello,而是應該執行java HelloDemo

在一個*.java的檔案中,隻能有一個public class的聲明,但是允許有多個class的聲明

public class Hello{
     public static void main(String args[]){
         System.out.println("HelloWorld!!!");
     }
 };
 class A{};
 class B{};