1

我有一个对象数组,其中一些使用扩展版本,其中包含基类中不可用的函数。当数组由基类定义时,如何通过数组调用该函数?

例子

Shape[] shapes = new Shape[10];

shapes[0] = new Circle(10) //10 == radius, only exists in circle class which extends Shape

shapes[0].getRadius(); //Gives me a compilation error as getRadius() doesn't exist in the      
Shape class, only in the extended Circle class. Is there a way around this?
4

3 回答 3

1

Shape类不包含该方法getRadius,因此如果不强制转换Shapeto的对象Circle,该方法将不可见。所以你应该使用这个:

((Circle)shapes[0]).getRadius();
于 2013-08-17T04:34:49.850 回答
0

如果您确定您的对象属于给定的子类,请使用 cast:

((Circle)shapes[0]).getRadius();
于 2013-08-17T04:33:10.970 回答
0

试试这个

if (shapes[0] instanceof Circle) 
       ((Circle)shapes[0]).getRadius();
于 2013-08-17T04:37:34.270 回答