gpt4 book ai didi

java - 在 Java 中使用 super

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:44 24 4
gpt4 key购买 nike

对于 Cube 类,我试图消除错误:

Cube.java:12: error: constructor Rectangle in class Rectangle cannot be applied to given types;
super(x, y);
^
required: int,int,double,double
found: int,int.......

我知道 Cube 的每个面都是一个 Rectangle,其长度和宽度需要与 Cube 的边相同,但我不确定需要将什么传递给 Rectangle 构造函数以使其长度和宽度为与立方体的侧面相同。

还尝试计算体积,即矩形面积乘以立方体边长

这是立方体类

// ---------------------------------
// File Description:
// Defines a Cube
// ---------------------------------

public class Cube extends Rectangle
{


public Cube(int x, int y, int side)
{
super(x, y);
side = super.area(); // not sure if this is right
}


public int getSide() {return side;}

public double area() {return 6 * super.area();}
public double volume() {return super.area() * side;}
public String toString() {return super.toString();}
}

这是矩形类

// ---------------------------------
// File Description:
// Defines a Rectangle
// ---------------------------------

public class Rectangle extends Point
{
private int x, y; // Coordinates of the Point
private double length, width;

public Rectangle(int x, int y, double l, double w)
{
super(x, y);
length = l;
width = w;
}

public int getX() {return x;}
public int getY() {return y;}
public double getLength() {return length;}
public double getWidth() {return width;}

public double area() {return length * width;}
public String toString() {return "[" + x + ", " + y + "]" + " Length = " + length + " Width = " + width;}
}

最佳答案

这个对象的构造本身似乎没有考虑到扩展的概念。

立方体 不是矩形Cube 可以被认为是多个 Rectangle 的组合,具有用于方向的空间数据,但是矩形应该是 Cube 的成员(读取属性/字段)

为了说明这一点,请考虑以下陈述之间的区别。

所有立方体都是矩形。

所有的猫都是动物。

您可以想像地创建一个扩展父类(super class)AnimalCat 对象。 CubeRectangle 不共享这种关系。

考虑将您的代码重构为:

public class Cube {
private List<Rectangle> faces:

....

}

更进一步,并非所有的 Rectangle 都是 Point

一个点是一对 x, y 坐标。为了准确地绘制一个Rectangle,所需的最少信息量是两个Point

+--
| |
--+

如果您有对角(此处用+标记),您可以绘制矩形

鉴于此,也许您还应该重构 Rectangle 以将一对 Point 作为成员。

类似于:

public class Rectangle {
private Point firstCorner;
private Point secondCorner;

...
}

关于java - 在 Java 中使用 super,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36552131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com