仅对数据进行继承?

时间:2012-03-19 22:31:27

标签: inheritance aggregation

我的课程包含数据和逻辑。

现在我需要很多不同的水果,只有不同之处:名称,位图和其他一些数据。

为每个水果制作新的子类是否有任何意义?他们与水果有“一种”关系。但他们不会添加新的行为或字段。

也许最好只是给fuit一个“类型”字段,而不是子类化它?这有什么不对吗?

2 个答案:

答案 0 :(得分:2)

你想要区分什么类型的水果?如果它只是一个输入缺陷,我倾向于使用枚举值,从基类中定义的枚举列表(在本例中为fruit),然后在继承类的构造函数上传递或初始化。

例如

class Fruit
{
   public:
   enum Type { SPIKEY, RED, ROUND, SQUISHY };

   Fruit(Type type)
   {
      mType =  type;
   }

  protected:
     Type mType;

};

您只需在构造函数中为名称等定义特定值

答案 1 :(得分:2)

如果我理解正确,一个课程就足够了。初始化时,可以传递名称。

public class Fruit{
    String name;
     ...//bit map, etc
    public Fruit(String name, ...){
       this.name=name;
       ...//bit map
    }
}

用户类:

 Fruit apple = new Fruit("apple", ...);