use*_*491 2 java methods arraylist
我收到一个错误,指出"无法找到方法 - getCenter"但是每当我用"a,b或d"这样的单个对象替换"objects.get(i)"时,它就会发现方法很好.我不明白为什么它无法从ArrayList中找到该方法.
public class TestPoly
{
public static void main (String []args)
{
ArrayList objects = new ArrayList();
Circle2 a = new Circle2(33,10,4);
Cylinder2 b = new Cylinder2(21,15,40,5);
Oval2 c = new Oval2(3,7,34,10);
OvalCylinder2 d = new OvalCylinder2(5,11,5,5,7);
objects.add(a);
objects.add(b);
objects.add(c);
objects.add(d);
for (int i = 0; i < objects.size(); i++)
{
System.out.println("For " + objects.get(i).getClass().getName() + objects.get(i).getCenter());
}
}
}
Run Code Online (Sandbox Code Playgroud)
Circle2就是这个.
public class Circle2
{
// instance variables
private int x;
private int y;
private int radius;
/**
* Constructor for objects of class circle
*/
public Circle2(int p_x, int p_y, int r)
{
// initialise instance variables
x = p_x;
y = p_y;
radius = r;
}
public int getRadius()
{
return radius;
}
public String getCenter()
{
return " the center is at (" + x + "," + y + ")";
}
}
Run Code Online (Sandbox Code Playgroud)
Cylinder2,Oval2和OvalCylinder2都只是Circle2的子类.
您尚未为您声明Type参数或Type参数ArrayList,因此默认为Object.Object没有getCenter()方法.
您可以将ArrayList声明更改为:
ArrayList<Circle2> objects = new ArrayList<Circle2>();
Circle2 a = new Circle2(33,10,4);
objects.add(a);
objects.get(0).getCenter();
Run Code Online (Sandbox Code Playgroud)
但它现在只能拿走Circle2物品.
| 归档时间: |
|
| 查看次数: |
1019 次 |
| 最近记录: |