管理所有抽象方法

时间:2017-08-23 13:04:28

标签: java abstract extends

我创建了一个名为Creature的抽象类和两个扩展Creature的类,名为Human和Dog。还有一些方法,比如getAge和setAge,你可以看到:

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
}

然后我做到了:

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 个答案:

答案 0 :(得分:0)

我假设setCreature在一种列表中添加一个新生物

你只需要迭代列表并增加年龄而不必关注生物的类型

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