【发布时间】:2015-08-06 12:23:24
【问题描述】:
我必须用 Java 解决这个“容器问题”。我有一个由不同数字组成的数组,我希望下面的代码可以工作:
package container;
class Figure{
public void draw() {}
public String getColor() { return null; }
}
class Square extends Figure{
@Override
public void draw(){
System.out.println("Square");
}
}
class Circle extends Figure{
@Override
public void draw(){
System.out.println("Circle");
}
public float getRadius(){
return 8;
}
}
public class Container {
public static void main(String[] args) {
Figure[] figures = new Figure[3];
figures[0]= new Circle();
figures[1]= new Circle();
figures[2]= new Square();
for(Figure figure:figures){
figure.getColor();
figure.draw();
((Circle) figure).getRadius();
}
}
}
在哪里可以看到有问题,因为Square 没有getRadius() 方法。我有以下限制:
- 不能使用泛型
- 不能使用
instanceof
它应该是一个不错的面向对象的设计解决方案。
【问题讨论】:
-
预期的行为是什么? Square 不是圆形 - 那条线应该如何工作?
标签: java arrays polymorphism containers heterogeneous