Я создал массив для хранения разных форм. Circle и Square - это абстрактные классы, расширенные от Class Shape. Cube и Sphere взяты из интерфейса под названием ThreeDShape. Мне нужно найти область для всех фигур, а также область и объем для 3D-фигур и вызвать их с помощью массива. Я получил класс Test, чтобы иметь возможность использовать абстрактные методы. Как получить тестовый класс для использования методов интерфейса? Как напечатать абстрактные методы И методы интерфейса в одном массиве?
Мне также нужно вызвать детали каждого класса из массива с помощью метода getClass ().
public class Test {
public static void main(String[] args) {
Shape [] shape = new Shape[4];
Circle circle = new Circle();
shape[0] = circle;
Shape sphere = new Sphere();
shape[1] = sphere;
Shape cube = new Cube();
shape[2] = cube;
Square square = new Square();
shape[3] = square;
for(Shape shape1 : shape) {
System.out.println("The area of " + shape1.getClass() +" is " + shape1.area());
System.out.println("The volume of " + shape1.getClass() +" is " + shape1.volume());
System.out.println("Found in " + shape1.getClass());
System.out.println(" ");
}
}
}
public interface ThreeDShape {
public abstract double volume();
}
public class Cube implements ThreeDShape{
double a = 5;
public double volume() {
return a*a*a;
}
public double area() {
return 6*a*a;
}
}
public class Square extends Shape {
double s = 5;
public double area() {
return s*s;
}
}
public class Circle extends Shape {
double r = 9;
public double area() {
return r*r*3.14;
}
}
public class Sphere implements ThreeDShape {
double r1 = 5;
public double volume() {
return ( 4.0 / 3.0 ) * Math.PI * Math.pow( r1, 3 );
}
public double area() {
return 4*3.14*r1*r1;
}
}
public abstract class Shape {
public abstract double area();
protected abstract double volume();
}
```