Наследование только для данных? - PullRequest
0 голосов
/ 20 марта 2012

У меня есть класс Fruit с данными и логикой.

Теперь мне нужно много разных фруктов, которые отличаются только: именем, растровым изображением и некоторыми другими данными.

Есть ли смысл создавать новый подкласс для каждого фрукта? У них все "есть" отношения с фруктами. Но они не добавляют новое поведение или поля.

Может быть, лучше просто дать fuit поле типа, а не разделять его на подклассы? Что-то не так с этим?

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Достаточно одного класса, если я правильно понимаю. после инициализации имя может быть передано.

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

класс пользователя:

 Fruit apple = new Fruit("apple", ...);
2 голосов
/ 20 марта 2012

Какие виды фруктов вы пытаетесь выделить?Если это просто печатная разница, я склонен использовать значение enum из списка enum, определенного в базовом классе (в данном случае fruit), а затем передаваемого или инициализируемого в конструкторе наследующего класса.

например

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

   Fruit(Type type)
   {
      mType =  type;
   }

  protected:
     Type mType;

};

Вы можете просто определить конкретные значения в конструкторе для имени и т. Д.

...