关于应用继承的建议

时间:2014-03-18 20:38:34

标签: java

我正在上课,应该用老麦克唐纳的歌来证明继承;这里有一个动物界面,一个实现每个动物对象的农场类......你明白了。我有两个问题。

1)动物有类型和声音,例如,小鸡是

class Chick implements Animal {
    private String myType;
    private String mySound;
    private String mySound2;
    int flag =0;

    public Chick(String type, String sound)
    {
        myType = type;
        mySound = sound;
    }

    public Chick(String type, String sound,String sound2)
    {
        myType = type;
        mySound = sound;
        mySound2=sound2;
    } 

    public Chick()
    {
        myType = "unknown";
        mySound = "unknown";
    }

    public String getSound() 
    {
        return mySound;
    }

    public String getType()
    {
        return myType; 
    }
}

我应该创建一个带有标志的第二个构造函数,该标志表示小鸡是否幼稚并且返回声音" cheep"或者是成年人并且返回" cluck"这样getSound()返回的概率相等。我不知道该怎么做。我考虑过在构造函数中添加一个布尔值,但是这不会起作用,因为farm类只能创建一个新的Chick();我意识到你不仅要给我答案,而且我甚至不知道从哪里开始。

2)另一个问题是我应该创建一个NamedCow类,正如你可能猜到的那样,给了牛一个名字。

我不能只将一个getName方法添加到cow类中,namedCow必须是一个新类

public class NamedCow extends Cow {

    private String myName;

    NamedCow(String name)
    {
        myName = name;
    }

    public String getName()
    {
        return myName;
    }

请您帮我根据需要为Chick and Cow课程编写正确的代码?我必须在两个课程中做出哪些改变?

1 个答案:

答案 0 :(得分:0)

对于Chick问题,我会使用随机方法,如: http://docs.oracle.com/javase/7/docs/api/java/util/Random.html

使用nextBoolean()并将其结果传递给getSound(boolean isChild)方法

然后检查getSound()方法

if (isChild)
   return "cheep";
else 
   return "cluck";

如果你想每次都有鸡的随机反应。只需将随机生成器添加到方法

即可
String getSound(){

Random r = new Random();

if (r.nextBoolean)
       return "cheep";
    else 
       return "cluck";
}

关于奶牛问题,我会创建一个继承动物然后编写方法的牛类: 例如:

nameCow(String name){
    this.cowName=name;
}