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?
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();
If you're sure your object is of a given subclass, use cast:
((Circle)shapes[0]).getRadius();
try this
if (shapes[0] instanceof Circle)
((Circle)shapes[0]).getRadius();
来源:https://stackoverflow.com/questions/18285130/java-calling-functions-in-extended-classes-through-an-object-array