轉載自: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編程思想》