標籤:rgs pki 導包 3.2 不同 style stat protected 外部
1.編譯單元
- 一個 編譯單元即 .java 檔案 內只能有一個 public 類 且該檔案名稱必須與public 類名 完全一致。
- 編譯單元內也可以沒有public類 檔案名稱可隨意。
2. 包:庫單元
2.1 預設存取權限即包存取權限,同一包下可訪問(指同一目錄下各個.java檔案中的包存取權限類或者類成員可相互訪問)。
2.2 父,子目錄不屬於同一包(其實沒有什麼父子目錄,包名都是唯一的)。
2.3 包可以看成類的集合,裡面有public類 也有預設權限類別,所以同一包下2個.java檔案中不能有類同名。
2.4 要使用其他包中的類 需要導包 import
3.許可權從大到小
- public protected 包存取權限 private
3.1 public 介面存取權限
3.2 protected 繼承存取權限和包存取權限,無public許可權。
3.3 private 無法訪問 只有該private成員所在的類能訪問。
3.4 把所有構造器設為private可以阻止類之外通過new建立對象。
4.類的許可權
- 類只有public和預設包許可權,內部類可以有protected和private許可權。
5.存取權限控制也叫具體實現的隱藏6.封裝
7.類的存取權限
- 對於一個類來說其內部成員相互沒有什麼許可權,並且調用方法不需要對象和this
class Test { private void f() { }; void g() { f(); };}
8.private構造器 外部不能產生該類對象
- private構造器 外部不能產生Test對象 但可以通過其類內部的靜態方法返回該類對象,這樣外部就可以建立Test對象了
public class ClassRe { public static void main(String[] args) { Test p1 = Test.make(), p2 = Test.make(); System.out.println(p1); System.out.println(p2); }}class Test { private Test() {}; static Test make() { return new Test(); }}
從輸出看建立了2個不同對象
[email protected][email protected]
9.單例
class Test { private Test() {}; private static Test t1 = new Test(); //只建立一個對象 public static Test access(){ //外部只能通過調用該方法建立Test對象 return t1; }}
.
《Java編程思想》筆記 第六章 存取權限控制