Java - Calling functions in extended classes throu

2019-06-07 12:05发布

I've got an array of objects, some of which use an extended version which contains a function not available in the base class. How can I call that function through the array when the array is defined by the base class?

Example

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?

3条回答
Fickle 薄情
2楼-- · 2019-06-07 12:41

try this

if (shapes[0] instanceof Circle) 
       ((Circle)shapes[0]).getRadius();
查看更多
放荡不羁爱自由
3楼-- · 2019-06-07 12:48

If you're sure your object is of a given subclass, use cast:

((Circle)shapes[0]).getRadius();
查看更多
看我几分像从前
4楼-- · 2019-06-07 12:59

Shape class does not contain the method getRadius and hence without casting the object of Shape to Circle, the method will not be visible. So you should use this:

((Circle)shapes[0]).getRadius();
查看更多
登录 后发表回答