爲什麼需要內部類?

典型的情況是,內部類繼承自某個類或實現某個接口,內部類的代碼操作創建其的外圍類
的對象。所以你可以認爲內部類提供了某種進入其外圍類的窗口。
 
內部類必須要回答一個問題是:如果我只是需要一個對接口的引用,爲什麼我不通過外圍
類實現那個接口呢?答案是:“如果這能滿足你的需求,那麼你就應該這樣做。”
麼內
部類實現一個接口與外圍類實現這個接口有什麼區別呢?答案是你不是總能享用到接口帶
來的方便,有時你需要與接口的實現進行交互,所以使用內部類最吸引人的原因是:
 
每個內部類都能獨立地繼承自一個(接口的)實現,所以無論外圍類是否已經繼承
了某個(接口的)實現,對於內部類都沒有影響。
 
如果沒有內部類提供的可以繼承多個具體的或抽象的類的能力,一些設計與編程問題就很
難解決。從這個角度看,內部類使得多重繼承的解決方案變得完整。接口解決了部分問題,
而內部類有效地實現了“多重繼承”。也就是說,內部類允許你繼承多個非接口類型(譯
注:類或抽象類)。
 
爲了看到更多的細節,考慮下面這種情形,你必須在一個類中以某種方式實現兩個接口。
由於接口的靈活性,你有兩種選擇:只使用單一的一個類,或者使用一個內部類:
 

 

1.  內部類可以有多個實例,每個實例都有自己的狀態信息,並且與其外圍類對
象的信息相互獨立。


2.  在單個外圍類中,你可以讓多個內部類以不同的方式實現同一個接口,或繼
承同一個類。


3.  創建內部類對象的時刻並不依賴於外圍類對象的創建。


4.  內部類並沒有令人迷惑的“is-a”關係;它就是一個獨立的實體。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章