这是一项家庭工作任务,我似乎无法理解为什么它不起作用。
import java.util.ArrayList;
public class Main {
Shapes[] listTest = new Shapes[6];
listTest[0] = new Circle[2.0];
listTest[1] = new Triangle[];
listTest[2] = new Rectangle[4];
listTest[3] = new Trap[];
listTest[4] = new Square[4];
listTest[5] = new Quadrilateral[];
}
// This is the other class
public class Circle implements Shapes {
private double radius;
private String name = "circle";
public Circle(double radius){
this.radius = radius;
}
public double area (){
double perimeter = Math.PI*radius*radius;
return perimeter;
}
public double perimeter (){
double area = Math.PI * 2*radius;
return area;
}
public String getName (){
return name;
}
}
这是包含构造函数和使用私有变量的方法的另一个Circle类。
答案 0 :(得分:2)
方括号用于初始化数组,我觉得你打算调用Shape
对象的构造函数。将这些方括号[]
更改为括号()
。
这是我的意思的一个例子。
public class Main {
interface Shape {
// ...
}
class Circle implements Shape {
private double radius;
public Shape(double radius) {
this.radius = radius;
}
}
// the rest of the shapes
public static void main(String[] args) {
Shape[] listTest = new Shape[6];
listTest[0] = new Circle(2.0);
// the rest of the shapes
}
}
答案 1 :(得分:2)
数组期望Shape Object不是Shapes数组。
例如:
正在寻找
listTest[0] = new Circle(2);
不是
listTest[0] = new Circle[2.0];
答案 2 :(得分:0)
关于如何在java中创建对象。
基于名称:Shapes
,Circle
,Triangle
。它看起来像Java Inheritance
,所以我认为逻辑是声明一个Shapes
的数组,然后将instances/objects
实例化为数组元素。实例化对象时,必须使用括号()而不是方括号
对Circle,Triangle类使用new
运算符时,它被称为instantiation
,您在内存中创建了一个对象,调用了该类的构造函数。
参见一些例子:
Point originOne = new Point(23, 94);
Square rectOne = new Square();
Rectangle rectTwo = new Rectangle(50, 100);
回到您的代码,您的Circle类的constructor
是
public Circle(double radius)
{
this.radius = radius;
}
因此,要创建一个对象,它将是new Circle(2.0)