JAVA中類的public class與class的區別詳解

轉載自:https://blog.csdn.net/jingzi123456789/article/details/71515728

1.類的訪問權限

  • 爲了控制某個類的訪問權限,修飾詞必須出現在關鍵字class之前。例如:public class Student {}
  • 在編寫類的時候可以使用兩種方式定義類:
    (A)public class定義類
    (B)class定義類

2.public class定義類

  • 如果一個類聲明的時候使用了public class進行了聲明,則類名稱必須與文件名稱完全一致。
  • 被public修飾的類可以被其他包訪問。如果現在的庫名是com,那麼就可容易通過下面的聲明訪問Student:
import com.Student;
或者
import com.*;

這裏寫圖片描述

3.class定義類

  • 如果一個類聲明的時候使用了class進行了聲明,則作爲啓動類的名稱可以與文件名稱不一致,但是執行的時候肯定執行的是生成後的名稱。
  • 沒有public修飾的類,該類就擁有了包訪問權限,即該類只可以用於該包之中。
    這裏寫圖片描述

這裏寫圖片描述

4.class定義的類只具有包訪問權限,該類不能被其他包訪問

package access.cookie2;

public class Cookie
{
    Cookie()
    {
        System.out.println("Cookie constructor");
    }
    public void bite()
    {
        System.out.println("bite");
    }
}  
package access;
import access.cookie2.*;

public class ChocolateChip2
{
    public ChocolateChip2()
    {
        System.out.println("ChocolateChip2 constructor");
    }

    public static void main(String[] args)
    {
        ChocolateChip2 x = new ChocolateChip2();

        Cookie y = new Cookie();
        y.bite();       
    }
}
  • 編譯、運行:
    這裏寫圖片描述

  • 如果把Cookie修改爲:public class Cookie{}。再編譯、運行:
    這裏寫圖片描述

5.小結

  • 每個編譯單元(文件)都只能有一個public類。即每個編譯單元都有單一的公共接口,用public類實現。此時,mian()就必須要包含在public類中。
  • public類的名稱必須完全與含有該編譯單元的文件名稱一致,包括大小寫。如果不匹配,編譯時錯誤。
  • 如果編譯單元(文件)中不含有一個public類,此時編譯單元文件名稱可以與啓動類名稱可以不一致,即可以隨意對文件命名。這樣的話,main()不是必須要放在public類中才能運行程序。
  • 總的來說,一個Java源文件中最多只能有一個public類,當有一個public類時,源文件名必須與之一致,否則無法編譯,如果源文件中沒有一個public類,則文件名與類中沒有一致性要求。至於main()不是必須要放在public類中才能運行程序。

參考:http://www.jb51.net/article/39892.htm
http://www.cnblogs.com/stevengerrard/p/4067422.html
《java編程思想》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章