public class Shape {
void draw() {
}
void erase() {
}
}
public class Circle extends Shape{
@Override
void draw() {
System.out.println("Circle.draw()");
}
@Override()
void erase() {
System.out.println("Circle.erase()");
}
}
public class Spuare extends Shape{
@Override
void draw() {
System.out.println("Square.draw()");
}
@Override()
void erase() {
System.out.println("Square.erase()");
}
}
public class Triangle extends Shape{
@Override
void draw() {
System.out.println("Triangle.draw()");
}
@Override()
void erase() {
System.out.println("Triangle.erase()");
}
}
public class BindingTester{
public static void main(String[] args) {
Shape[] shape = new Shape[9];
int n;
for(int i = 0; i < shape.length; i++) {
n = (int)(Math.random() * 3);
switch(n) {
case 0: shape[i] = new Circle(); break;
case 1: shape[i] = new Square(); break;
case 2: shape[i] = new Triangle();
}
}
for(int i=0;i<shape.length;i++) {
shape[i].draw();
}
}
}
其他 先不说 n = (int)(Math.random() * 3);*3是什么鬼,不应该%3么
上一个代码的运行结果是啥意思?是跟你贴出来的这段代码完全不同的代码的运行结果吗?如果是这样的话你查看一下编译器编译的是哪一部分程序啊,这个应该好解决吧
case 1: shape[i] = new Square(); break;
你把他改为
case 1: shape[i] = new Spuare(); break;试一下