超级方法

时间:2014-03-28 13:51:10

标签: java loops methods superclass println

我正在编写一个创建动物的程序,需要一些帮助来创建一种方法,当健康,能量或饥饿程度降至20以下时,程序将打印出该动物的噪音。有一种超级动物,我正在养狗。

以下是动物类代码的示例:

public void setHungry(int Hungry) {
    this.Hungry = Hungry;

如何编写方法,以便如果饥饿率降至20以下,程序将:

if (Hungry <= 20) 
System.out.println ("Grunt");

我没有很多编码经验。 提前谢谢

我忘了提到这是一个小组任务,我不能改变动物类

2 个答案:

答案 0 :(得分:1)

Animal.java

public abstract class Animal {

    private int hungry;

    public void setHungry(int hungry) {
        this.hungry = hungry;
        if(this.hungry <= 20) {
            this.shout();
        }
    }

    public abstract void shout();

}

Lion.java

public class Lion extends Animal {

    @Override
    public abstract void shout() {
        System.out.println("GRRRRR");
    }

}

编辑:考虑到动物无法触及你应该在你的子类中更改setHungry的定义。我假设你有价值的吸气剂?或者价值受到保护?

public class Lion extends Animal {

    @Override
    public void setHungry(int hungry) {
        super.setHungry(hungry);
        if(this.getHungry() <= 20) {
            System.out.println("GRRRRR");
        }
    }

}

答案 1 :(得分:0)

托马斯&#39;方法是有效的,但如果您需要在其他地方进行此检查,请让我建议另一种解决方案。

public abstract class Animal {

    int hunger;
    int energy;
    int health;

    public void makeNoise() {
        if (hunger < 20 || energy < 20 || health < 20) {
            System.out.println(getVoice());
        }
    }

    abstract protected String getVoice();
}


public class Lion extends Animal {
    String voice = "Grr";

    @Override
    protected String getVoice() {
        return voice;
    }
}