从子类调用方法

时间:2017-09-30 10:56:16

标签: java casting polymorphism

我有一个名为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();
}

1 个答案:

答案 0 :(得分:0)

您必须在calcArea()中将Shape定义为方法;它可以是一个抽象的方法,如下所示:

public abstract float calcArea();

然后您需要在每个子类中实现该方法。然后可以从任何Shape子类获得它而不进行强制转换。