我已经编写了一个类 Geom ,它代表三维几何形式,并使用属性double dx, dy, dz
(表格的坐标)和String colour
(颜色)形式)。现在我应该更具体,我想编写一个扩展 Geom 的类 Cube ,并且还可以使用属性边长 ,以计算表格的体积或面积等内容。
为了做到这一点,我需要编写一个方法private double length
,保存边长。除此之外,我需要实现 get - 和 set-methods 。
实际上这应该很容易,但我不知道我在这里要做什么。我开始是这样的:
public class Cube extends Geom {
int edge;
public Cube (double dx, double dy, double dz, String colour, double edge) {
super(dx, dy, dz, colour);
edge = ///I don't know what do to here
}
private double length(double edge) {
this.edge = edge;
return this.edge;
}
public double getEdge() {
double a = length();
return a;
}
public void setEdge() {
this.edge = edge
}
...
但这似乎没有多大意义。我收到两个错误,一个告诉我this.edge = edge
是从double到int的有损转换,并且告诉我double a = width();
是不可能的,因为方法width()
无法应用于给定的类型。我没有完全看到"拯救"首先是长度,然后得到它并将其设置到最后。
答案 0 :(得分:1)
public class Cube extends Geom {
首先应该封装这样的变量并为它们创建getter和setter。
private int edge;
public Cube (double dx, double dy, double dz, String colour, int edge) {
super(dx, dy, dz, colour);
如果您希望能够使用给定边构造Geom对象 你需要类似的东西,并将参数类型更改为int
this.edge=edge;
这会将给定参数设置为您的变量'这个' keyword意味着您要调用此类边缘变量,因为参数名称相同。
我不知道为什么你在这里创建了它应该返回的方法长度? 据我所知它返回边缘,然后是getter工作。
}
private double length(double edge) {
this.edge = edge;
return this.edge;
}
你希望在你的edge变量为int时返回double,可能需要这个。
public int getEdge() {
return edge;
或
return this.edge;
在这一点上最重要的是
}
并且setter应该采用与变量匹配的值 再一次你不一定需要说this.edge,因为编译器会知道该怎么做,因为这是唯一的边缘变量。
public void setEdge(int value) {
this.edge = value;
}
然后你可以在长度方法中进行计算和填充,并在需要时将其解析为双倍,或者如果首先需要加倍,只需将边缘类型更改为double