Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保存、获取和设置多维数据集的长度(扩展类)_Java_Oop - Fatal编程技术网

Java 保存、获取和设置多维数据集的长度(扩展类)

Java 保存、获取和设置多维数据集的长度(扩展类),java,oop,Java,Oop,我已经编写了一个Geom类,它表示三维几何形式,并使用属性double dx,dy,dz(形式坐标)和字符串颜色(形式颜色)。现在我想更具体一点,我想写一个类立方体,它扩展了Geom,并进一步处理属性edge length,以便计算表单的体积或面积 为此,我需要编写一个方法private double length,它可以保存边的长度。除此之外,我还需要实现get-and-set方法 实际上这应该很容易,但我不知道我在这里要做什么。我是这样开始的: public class Cube exten

我已经编写了一个Geom类,它表示三维几何形式,并使用属性
double dx,dy,dz
(形式坐标)和
字符串颜色
(形式颜色)。现在我想更具体一点,我想写一个类立方体,它扩展了Geom,并进一步处理属性edge length,以便计算表单的体积或面积

为此,我需要编写一个方法
private double length
,它可以保存边的长度。除此之外,我还需要实现get-and-set方法

实际上这应该很容易,但我不知道我在这里要做什么。我是这样开始的:

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()
无法应用于给定的类型。我不太明白先“保存”长度,然后获取长度并最终设置长度的意义

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);
如果希望能够构造具有给定边的几何对象 您需要类似,并将参数类型更改为int

this.edge=edge;
这会将给定参数设置为变量“this”关键字意味着您希望调用此类边缘变量,因为参数名称相同

我不知道你为什么在这里创建方法长度它应该返回什么?? 就我所见,它返回边缘,然后是getter任务

  }

  private double length(double edge) {
  this.edge = edge;
  return this.edge;

  }
当edge变量为int时,您希望返回double,可能需要这样做

  public int getEdge() {
  return edge; 

这一点无关紧要

  }
setter应该采用与变量匹配的值 同样,您不必说this.edge,因为编译器知道该怎么做,因为这是这里唯一的edge变量

  public void setEdge(int value) {
  this.edge = value;
  }

然后,您可以在length方法中进行计算和填充,并根据需要将其解析为double,或者如果首先需要double,只需将边的类型更改为double

您已声明
int edge
,但
length
的参数是
double
。这确实是这里的第一个错误,谢谢!如果你能展示基类,那将是一个好主意。非常感谢!我像这样实现它并测试它。它有效。:-)但是价值变量在这里扮演什么样的角色呢?参数从何而来?值是针对您的setter的,是您或其他人将用于设置edge值的API。他将使用geom.setEdge(23);假设在构建的geom对象上设置它。在这种情况下,值参数是您需要的-想象一下,如果您无法说出您希望它达到多少,您将如何设置边缘?哦,好的!但它不是我在测试类中给出的参数,是吗?因为在我的测试类中,我构建了这样一个对象:
Cube1=newcube(1.0,2.5,3.1,“White”,2.0)。。。其中
2.0
表示边缘的长度。
  public void setEdge(int value) {
  this.edge = value;
  }