我有一个名为Shape的超类,我的shape类有一个名为2DShape的子类,2DShape有一个名为circle,square的子类。
我创建了一个Shape类型的数组来保存形状
的这些对象引用 Shape [] shapes = new Shape[4];
shapes[0] = new Circle(22, 88 , 4, 0);
shapes[1] = new Square(71, 96 , 0, 10);
我的问题是我只能从Shape类中调用方法。如何从Square和圈子类中调用方法?这两个调用都有一个名为calcArea的方法,我想调用它。
尝试此操作时出现“无法找到符号”错误
for (int i = 0; i < shapes.length; i++) {
System.out.println(shapes[i]);
shapes[i].calcArea();
}
答案 0 :(得分:0)
您必须在calcArea()
中将Shape
定义为方法;它可以是一个抽象的方法,如下所示:
public abstract float calcArea();
然后您需要在每个子类中实现该方法。然后可以从任何Shape
子类获得它而不进行强制转换。