java程式設計思想(讀書筆記) 5 隱藏實現細目

2021-07-08 14:21:19 字數 1260 閱讀 6348

五、隱藏實現細目

package(程式庫單元):每個編譯單元只能有乙個public class,否則編譯器不接受。package之外的世界無法看見該編譯單元內的其餘classes,這些classes主要用來為那個主要的public class提供支援。

應該明白,關鍵字package和import所提供的,乃是將單一全域性命名空間加以切割。

如果想出貨時取消除錯的assertions功能,可以開發第二個assert class,並將它置於另乙個不同的package中,這樣,通過匯入不同的package,便可以使程式**從除錯版變為出貨版,這個技巧可用於任何型別的條件編譯程式**上。

介面與實現:

我們需要控制訪問許可權,在資料型別中建立界限的兩個理由:

1. 建立起一道界限,指明哪些是客戶端程式員可以使用的,哪些是他們不能使用的。

2. 將介面和實現分離。

class的訪問許可權:為classes 而設的訪問許可權,可以控制客戶端程式員是否有權利產生某個class的物件。

雖然通常不這樣做,但是編譯單元內的確可以不含任何public class。

注意:class不能是private(這麼做會使得除了他自己沒有任何class可以取用)或者protected,當然有特例,事實上,inner class可以是private或者protected。所以對於class的訪問許可權,只有friendly或者public,如果你不希望其他任何人取用某個class,請將其建構函式宣告為private,這樣就不能通過new來產生乙個物件。

不同通過new的常規方法來產生物件,那麼我們怎麼產生物件呢?方法兩種:

**演示

class soup

//通過static函式來產生新的soup物件並返回其reference。

public

static soup makesoup()

//使用「singleton」的設計模式,因為它讓整個程式面對某個class時只能產生唯一乙個物件。

private

static soup ps1 = new soup();

public

static soup access()

public

void

f(){}

}public

class mian

}

方法一適用:在執行soup之前先進行某些額外處理,或者希望記錄(或限制)究竟有多少個soup物件被產生出來,非常適用。

方法二適用:只產生唯一的乙個物件。

Java程式設計思想讀書筆記(二) 介面

抽象方法 僅有宣告而沒有方法體。抽象類 包含乙個或者多個抽象方法的類,必須定義為抽象的 抽象類也可以沒有抽象方法 目的 組織建立這個類的物件。1.inte ce 預設是default許可權 可以新增public修飾符。2.inte ce中的變數都是 public static final 修飾的,介...

C程式語言讀書筆記 5

double dp,atof char 表明,dp 和atof char 的值都是 double 型別的。該宣告中 atof 的引數是指向 char 型別的指標,指標必須指向特性型別的物件,但是 void 型別的指標可以存放指向任何型別的指標。陣列和指標的關係 陣列名所代表的指標就是該陣列最開始的乙...

讀書筆記 5

解碼gdi物件控制代碼 今天都是在探索gdi內部的結構,在微軟的文件中並沒有系統的記載,雖然我覺得很有道理,但到底是不是這樣只有微軟自己知道了 1 先看一下gdi控制代碼的定義,如hpen是這樣定義的 如果strict已經被定義了 struct hpen typedef struct hpen hp...