第15條 :要么專門為繼承而設(shè)計(jì),并給出文檔說明,要么禁止繼承
? 為了允許繼承,一個(gè)類必須遵守如下約定:
? 構(gòu)造函數(shù)一定不能調(diào)用可被改寫的方法。
第16條:接口優(yōu)于抽象類
? 接口通常是定義具有多個(gè)實(shí)現(xiàn)的類型的最佳途徑。
? 例外情形是當(dāng)演化的容易性被靈活性和功能更為重要的時(shí)候。這時(shí)應(yīng)該使用抽象類來定義類型。
? 如果導(dǎo)出了一個(gè)重要接口,應(yīng)該考慮同時(shí)提供一個(gè)骨架實(shí)現(xiàn)類(skeletal implementation class)
? 盡可能謹(jǐn)慎設(shè)計(jì)所有的公有接口,并編寫多個(gè)實(shí)現(xiàn)來測試它們。
第17條:接口是用于定義類型的
? 接口應(yīng)該這是被用來定義類型的
? 常量接口模式是對接口的不良使用
如果需要導(dǎo)出常量,應(yīng)該使用類型安全枚舉類,如
public class PhysicalConstants{
private PhysicalConstants(){}//注意:構(gòu)造函數(shù)應(yīng)該是私有的,避免子類化
public static final AVOCADROS_NUMBER = .....;//注意,常量類型應(yīng)該是static final的
}
第18條:優(yōu)先考慮靜態(tài)成員類
? 嵌套類有四種:靜態(tài)成員類,非靜態(tài)成員類,匿名類,局部類
? 非靜態(tài)成員類的一種通用用法:允許外部類的一個(gè)實(shí)例被看做另一個(gè)不相關(guān)的類的實(shí)例。
例如,諸如Set和List這樣的集合接口的實(shí)現(xiàn)往往使用非靜態(tài)成員類來實(shí)現(xiàn)他們的迭代器
public class MySet extends AbstractSet {
public Iterator iterator(){
return new MyIterator();
}
public class MyIterator implements Iterator{
................
}
}
? 如果聲明的成員類不要求訪問外圍實(shí)例,那么使用static修飾符使它成為靜態(tài)成員類。
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||