2016-10-11 172 views
1

如果一個類擴展了另一個類,擴展類可以被初始化而不是擴展它嗎?如果一個類擴展了另一個類,擴展類可以被初始化而不是擴展它嗎?

實施例1:

public class FoodListAdapter extends BaseAdapter{ 
    //rest of the codes in here 
} 

實施例2:

public class FoodListAdapter { 
    private BaseAdapter fAdapter; 
    //rest of the codes here 
} 

可以例2得到了類似的結果作爲例1的?

+1

一個被稱爲[**是-A **](https://en.wikipedia.org/wiki/Is-a)的關係。另一個稱爲[** has-a **](https://en.wikipedia.org/wiki/Has-a)關係。 –

回答

0

示例1是繼承。

示例2是Aggregation,表示Has-A關係的定向單向關聯。

示例1更脆弱,因爲它直接將用戶展示給底層的BaseAdapter類。示例2可以將呼叫封裝並委託給BaseAdapter。如果有一天你決定刪除BaseAdapter,那麼FoodListAdapter類的用戶永遠都不會知道。

+0

如果exam​​ple2有可能,請如何使用BaseAdapter進行編碼? – emmet4u

+0

您已經完成了,只需通過構造函數或setter方法傳入BaseAdapter即可。 – UserF40