请帮我看下这个java程序出的问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 15:33:47
public class TestRodent{
private static RandomRodentGenerator gen = new RandomRodentGenerator();
public static void main(String[] args){
Rodent[] R = new Rodent[10];
for(Rodent r : R){
r = gen.next();
System.out.println(r);问题在这里打印每次都是Rodent
gen.next不是应该每次都变吗 r应该等于 Mouse 或者Gerbil啊
r.cry();
}
}
}
import java.util.Random;
public class RandomRodentGenerator{
private Random rand = new Random();
public Rodent next(){
switch(rand.nextInt(2)){
default:
case 0:return new Mouse();
case 1:return new Gerbil();
}
}
}
其他还有一个类和一个继承他的两个类

没错啊
我将类放在一个文件中,打印输出是Mouse 或者Gerbil啊
一共出现十次,Mouse ,Gerbil随机出现。

import java.util.Random;

public class TestRodent {
private static RandomRodentGenerator gen = new RandomRodentGenerator();

public static void main(String[] args) {
Rodent[] R = new Rodent[10];
for (Rodent r : R) {
r = gen.next();
System.out.println(r);
r.cry();
}
}
}

class RandomRodentGenerator {
private Random rand = new Random();

public Rodent next() {
switch (rand.nextInt(2)) {
default:
case 0:
return new Mouse();
case 1:
return new Gerbil();
}
}
}

class Rodent {
public void cry() {

}

}

class Mouse extends Rodent {

}

class Gerbil extends Rodent {

}

你贴出来的程序没问题,
如果你的打印有问题的话,那就是你另两个类写错了.没有实现多态.

这是我运行的结果:
Gerbil@1a