主类是Zoo,Animal类通过从每个不同的Animal(其他类)调用pinStick方法来执行多态性
在动物园数组循环中,int r的值由Math.random决定,每次为1或0,导致吱吱声或咆哮,这取决于调用哪个动物类。
我的问题是,每次调用Mouse或Lion时,如何包含要打印的Monkey类的实例(在if语句中)
目的是添加一个猴子类的新实例,以便在结果打印输出中将“OoOoAhAh”与“Squeak”和“Roar”一起
public class Zoo {
private Animal[] animals;
public Zoo() {
animals = new Animal[10];
}
public void talkAnimals() {
int r;
for (int i = 0; i < 10; i++) {
r = (int) Math.round(Math.random());
if (r == 0) {
animals[i] = new Mouse();
} else{
animals[i] = new Lion();
}
}
for (int i = 0; i < 10; i++) {
animals[i].pinStick();
}
}
public static void main(String[] args) {
// TODO code application logic here
new Zoo().talkAnimals();
}
}
public class Animal {
protected String name;
public Animal(){
}
public void pinStick(){
}
}
public class Mouse extends Animal {
public void pinStick(){
System.out.print("Squeak!");
}
}
public class Monkey extends Animal {
public void pinStick(){
System.out.print("OoOoOoAhAhAh!");
}
}
public class Lion extends Animal {
public void pinStick(){
System.out.print("Roar!");
}
}
答案 0 :(得分:-1)
目的是添加一个猴子类的新实例,以便在结果打印输出中将“OoOoAhAh”与“Squeak”和“Roar”一起
你可以为Monkey
声明另一个数组private Animal[] monkeys;
构造
monkeys = new Monkey[10];
并在for循环中推送新的Monkey对象
for (int i = 0; i < 10; i++) {
r = (int) Math.round(Math.random());
if (r == 0) {
animals[i] = new Mouse();
} else{
animals[i] = new Lion();
}
monkeys[i] = new Monkey();
}
然后在for循环中执行打印作业
for (int i = 0; i < 10; i++) {
animals[i].pinStick();
monkeys[i].pinStick();
}