2012-03-19 1 views
0

私はデータとロジックを持つクラスフルーツを持っています。データのみの継承ですか?

今や、名前、ビットマップ、およびその他のデータだけが異なる多くの異なるフルーツが必要です。

果実ごとに新しいサブクラスを作成する意味はありますか?彼らはすべて果物との関係があります。しかし、彼らは新しい行動やフィールドを追加しません。

「タイプ」フィールドをサブクラス化するのではなく、「タイプ」フィールドに与えるほうが良いでしょうか?それに何か問題はありますか?

答えて

2

どのような種類の果物を区別しようとしていますか?ちょうどタイピングの場合、基本クラス(この場合はfruit)で定義されたenumリストからenum値を使用し、継承するクラスのコンストラクタで渡されたり初期化されたりする傾向があります。私が正しく理解していれば

例えば

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

    Fruit(Type type) 
    { 
     mType = type; 
    } 

    protected: 
    Type mType; 

}; 

あなただけの名前などのために

+0

これはkasavbereの答えのようなものの列挙値です。同じコメント。 – Ixx

2

1つのクラスをコンストラクタで特定の値を定義することができますが、十分です。初期化時に、その名前が渡されることがあります。

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

ユーザークラス:

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

はい、このアプローチで何か問題がある場合は問題ですが、それは正しいと思います。さもなければ、私はデータのために50以上のクラスを取得し、それは意味をなさない。 – Ixx

+0

+1は良い答えですが(私は推測しますが)もう1つは最初です。 – Ixx