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

Shapeclass にはメソッドが含まれていないため、 togetRadiusのオブジェクトをキャストしないと、メソッドは表示されません。したがって、これを使用する必要があります:ShapeCircle

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

これを試して

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

オブジェクトが特定のサブクラスであることが確実な場合は、キャストを使用します。

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