2017-08-23 7 views
-4

私は、Creatureという名前の抽象クラスと、HumanおよびDogという名前のCreatureを拡張する2つのクラスを作成しました。すべての抽象メソッドを管理

public abstract class Creature { 
    public abstract void born(String name); 
    public abstract void setName(String name); 
    public abstract void setAge(int age); 
    public abstract int getAge(); 
    public abstract String getName(); 
} 

public class Human extends Creature { 
    private String name; 
    private int age; 

    public void born(String name){ 
     setName(name); 
     setAge(0); 
    } 

// getters and setters 
} 


public class Dog extends Creature { 
    private String name; 
    private int age; 

    public void born(String name){ 
     setName(name); 
     setAge(0); 
    } 

// getters and setters 
} 

そして私はこれます:そこgetAgeとsetAgeのようないくつかの方法は、あなたが見ることができるように、またある

private static Creature creature; 

String string = new Random().nextInt(2) == 1 ? "Human" : "Dog"; 
    if (string.equals("Human")) { 
     setCreature(new Human()); 
    } else { 
     setCreature(new Dog()); 
    } 
    for (int i = 0; i < 5; i++) { 
     creature.born("Name" + i); 
    // here are born 5 creatures 
    } 
    // after one year get all creatures and set their age +1 
私の質問は、私が得ることができるどのようにすべての生き物が生まれている

と後の1年+1で年齢を設定しますか?

+1

あなたの年_の定義は何ですか?スケジューラで年齢フィールドを増やしたいですか? –

+0

永続化せずにターゲットに到達したいですか? – Gamby

+0

いいえ、私は生まれたすべての生き物を手に入れて、すぐに年齢を上げる別の方法を作りたいだけです。 – Marius

答えて

0

は、私はあなただけで行う必要があり

は、リストを反復処理し、生き物の種類に注意を払うことなく、年齢をインクリメントすることであるsetCreatureは、リストの種類内の新しいクリーチャーを追加することを前提とし

for(Creature c : creatures){ 
    c.setAge(c.getAge() +1); 
} 
+0

私はリスト内にクリーチャー・クラスを追加したくないので、forループ内に生まれたすべてのクリーチャーを取得したいだけです。 – Marius

+0

リストや他のストレージコンテナにない場合は、あなたのクリーチャーをどのように保管しますか?あなたはそれらを追跡する必要がありますか、または年齢を増やす方法も、とにかく取得する方法もありません。 – xander

関連する問題