Например, у меня есть class Shape
, и я хочу, чтобы было несколько предварительно закодированных объектов с некоторыми параметрами Cube(int side)
, Dodecahedron(Color color)
, Tetrahedron(int volume)
. Параметр не позволяет делать как в классе Color
, потому что мы не можем делать на них ссылки c в статике. Как это сделать?
Отредактировано: Пример кода :
class SomeClass{
shape = new Cube(Color.blue);
}
public class Shape {
private Polygon3D[] polygons;
private Color color;
Shape(Color color, Polygon3D... polygons) {
this.color = color;
this.polygons = polygons;
sortPolygons();
setPolygonColor();
}
//public final static Shape Cube = new Shape(); doesn't work because i need parameters
}
Чтобы сделать предустановку, я должен делать такие вещи, но нет возможности установить параметры
class Cube extends Shape {
Cube(Color Color, int size) {
super(Color, polygons);
s = size;
}
private int s;
private static Point3D[] p = { null, new Point3D(s, -s, -s), new Point3D(s, s, -s), new Point3D(s, s, s),
new Point3D(s, -s, s), new Point3D(-s, -s, -s), new Point3D(-s, s, -s), new Point3D(-s, s, s),
new Point3D(-s, -s, s) };
private static Polygon3D[] polygons = { new Polygon3D(p[1], p[2], p[3], p[4]),
new Polygon3D(p[5], p[6], p[7], p[8]), new Polygon3D(p[1], p[2], p[6], p[5]),
new Polygon3D(p[1], p[5], p[8], p[4]), new Polygon3D(p[2], p[6], p[7], p[3]),
new Polygon3D(p[4], p[3], p[7], p[8]) };
}