以下是代码:
public static void main(String args[])
{
Circle objCircle = new Circle(5);
Square objSquare = new Square(5);
Triangle objTriangle = new Triangle(3, 4);
Sphere objSphere = new Sphere(5);
Cube objCube = new Cube(5);
Tetrahedron objTetra = new Tetrahedron(5);
Object[] Shape = new Object[5];
Shape[0] = objCircle;
Shape[1] = objSquare;
Shape[2] = objTriangle;
Shape[3] = objSphere;
Shape[4] = objCube;
Shape[5] = objTetra;
for(int i = 0; i<Shape.length; i++)
{
//Problem occured in this section of code
System.out.println(Shape[i].getArea());
}
}
}
我有六个不同的类,所有类都有getArray()方法,并定义了自己的类。我想使用Shape数组打印getArray()方法从不同类返回的值。
答案 0 :(得分:1)
定义如下界面。在Circle,Square ..类中实现此接口。
public interface Shape {
public Double getArea();
}
然后您可以使用以下不同的类getArea。
Shape [] shape = new Shape [5];
shape[0] = objCircle;
shape[1] = objSquare;
shape[2] = objTriangle;
shape[3] = objSphere;
shape[4] = objCube;
shape[5] = objTetra;
for(int i = 0; i<Shape.length; i++)
{
//Problem occured in this section of code
System.out.println(Shape[i].getArea());
}
答案 1 :(得分:0)
使用接口或抽象类并从中扩展所有不同的形状。
public abstract class Shape{
public abstract SomeType getArray();
}
并使用
Shape[] Shapes
而不是Object[]
。
答案 2 :(得分:0)
首先你要避免使用Object [] 如果你这样做会发生什么?
...
shape[6] = Integer.parseInt(1);
for(int i = 0; i<shape.length; i++)
{
//Oups a problem will occured here
System.out.println(shape[i].getArea());
}
通过使用Object [],您没有使用Java类型安全性。每个实例都继承自Java中的Object,这意味着您可以将所有内容放入Array中。
我看到你把一个变量用大写。对于Class,Enum,Interface来说,打破Java约定大写。也许我太正统了:))
您可以执行以下操作:
public abstract Shape {
public abstract double getArea();
}
public Circle extends Shape {
public abstract double getArea(){
//implementation here
}
}
etc...
取决于您的用例。由于某些情况下的继承权衡,接口可能更合适。
使用形状列表。当您调用List.add方法时,您将确保具有相同的类型。 此外,您可以使用foreach循环
答案 3 :(得分:0)
谢谢大家,我说得对,我发布的答案是我在你的帮助下解决的
public static void main(String args[])
{
Circle objCircle = new Circle(5);
Square objSquare = new Square(5);
Triangle objTriangle = new Triangle(3, 4);
Sphere objSphere = new Sphere(5);
Cube objCube = new Cube(5);
Tetrahedron objTetra = new Tetrahedron(5);
Shape[] a = new Shape[6];
a[0] = objCircle;
a[1] = objSquare;
a[2] = objTriangle;
a[3] = objSphere;
a[4] = objCube;
a[5] = objTetra;
for(int i = 0; i<a.length; i++)
{
a[i].getArea();
}
}
}