如果一个类扩展了另一个类,扩展类是否可以初始化而不是扩展它?

时间:2016-10-11 21:41:36

标签: java

如果一个类扩展了另一个类,扩展类是否可以初始化而不是扩展它?

示例1:

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

示例2:

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

Example2可以给出与Example1相似的结果吗?

2 个答案:

答案 0 :(得分:0)

示例1是继承。

示例2是Aggregation,一种表示Has-A关系的方向单向关联。

示例1更脆弱,因为它直接将用户暴露给基础BaseAdapter类。示例2可以封装并委托对BaseAdapter的调用。如果有一天您决定删除BaseAdapter,则FoodListAdapter类的用户永远不必知道。

答案 1 :(得分:0)

两种策略都很好。这取决于你想要达到的目标。

第一个例子是继承,第二个例子是委托。

两者都是众所周知的设计模式。

https://en.m.wikipedia.org/wiki/Delegation_pattern