java作用域public,private,protected及不寫時的區別

在說明這四個關鍵字之前,我想就class之間的關係做一個簡單的定義:對於繼承自己的class,base class可以認爲他們都是自己的子女,而對於和自己一個目錄下的classes,認爲都是自己的朋友。

1、public:對所有用戶開放,所有用戶都可直接調用
2、private:私有。除了class自己之外,任何人都不可直接使用,私有財產神聖不可侵犯嘛,即便是子女,朋友,都不可使用。
3、protected:對於子女、朋友來說,就是public的,可自由使用,無任何限制;而對於其他的外部class,protected就變成private。(同一個包中的類,若不在同一個包中,必須爲其子孫類纔可使用)

4、默認:默認可以稱爲friendly,但是java語言中是沒有friendly這個修飾符的,這樣稱呼應該是來源於c++。默認的訪問權限是包級訪問權限。

作用域 當前類 同一package 子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×

補充說明:
1.每個編譯單元(類文件)都僅能有一個public class
2.public class的名稱(包含大小寫)必須和其類文件同名。
3.一個類文件(*.java)中可以不存在public class。
如果我們在某個包內撰寫一個class,僅僅是爲了配合同一包內的其他類工作,並且我們不想再爲了撰寫說明文檔給客戶(不一定是現實意義的客戶,可能是調用這個類的類)看而傷腦筋;或者有可能過一段時間之後會徹底改變原有的做法,並以全新的版本代替舊版本,這種情況下一般會默認。
4、class不可以是private和protected。
轉載自http://blog.163.com/training_cui/blog/static/1730374702010919402866/

發佈了21 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章