面向?qū)ο蟪绦蛟O(shè)計(jì)概述
面向?qū)ο蟪绦蛟O(shè)計(jì),簡(jiǎn)稱OOP。
在類之間,最常見的關(guān)系有:
- 依賴("uses-a"):類A的方法操縱類B的對(duì)象。
- 聚合("has-a"):類A的對(duì)象包含類B的對(duì)象。
- 繼承("is-a"):用于表示特殊與一般關(guān)系。
很多程序員采用UML(Unified Modeling Language,統(tǒng)一建模語(yǔ)言)繪制類圖,用來(lái)描述類之間的關(guān)系。類用矩形表示,類之間的關(guān)系用帶有各種修飾的箭頭表示。
用戶自定義類
不要編寫返回引用可變對(duì)象的訪問器方法,這樣可能導(dǎo)致封裝的破壞。例如:
class Employee{
private Date hireDay;
public Date getHireDay(){
return hireDay;
}
Employee harry = ...
Date d = harry.getHireDay();
這樣,對(duì)d調(diào)用更改器方法就可以自動(dòng)地改變這個(gè)雇員對(duì)象的私有狀態(tài)。
final實(shí)例域
將實(shí)例域定義為final,則必須確保在每一個(gè)構(gòu)造器執(zhí)行后,這個(gè)域的值被設(shè)置,并且在后面的操作中,不能夠?qū)ζ湓龠M(jìn)行修改。
final修飾符大多應(yīng)用于基本類型域或不可變類的域(如果類中的每個(gè)方法都不會(huì)改變其對(duì)象,則為不可變的類,如String類)。而對(duì)于可變的類,使用final修飾符僅表示存儲(chǔ)在某變量中的對(duì)象引用在對(duì)象構(gòu)造后不能被改變,而并不意味著該變量是個(gè)常量。任何方法都可以對(duì)該變量引用的對(duì)象調(diào)用更改器。
靜態(tài)域和靜態(tài)方法
用static修飾符。建議使用類名,而不是對(duì)象來(lái)調(diào)用靜態(tài)方法。
在下面兩種情況下使用靜態(tài)方法:
- 一個(gè)方法不需要訪問對(duì)象狀態(tài),其所需參數(shù)都是通過顯式參數(shù)提供。
- 一個(gè)方法只需要訪問類的靜態(tài)域。