Java - Calling functions in extended classes through an object array

£可爱£侵袭症+ 提交于 2019-12-08 03:15:02

问题


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?

回答1:


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();



回答2:


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

((Circle)shapes[0]).getRadius();



回答3:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!