【问题标题】:Inheritance of Square method in javajava中Square方法的继承
【发布时间】:2014-09-26 04:07:43
【问题描述】:

我有一个 Rectangle 类,布局如下:

package Inheritance;

/**
 *
 * @author Jacob
 */
public class Rectangle {
final private int length;
final private int width;

public Rectangle (int l, int w)
{
    length = l;
    width = w;
}

public int getLength ()
{
    return length;
}

public int getWidth ()
{
    return width;
}

@Override
public String toString ()
{
    return String.format ("Rectangle (%dX%d)", length, width);
}

}

然后我需要通过以下方式创建类 square:

广告广场: 正方形延伸矩形 / 类 Square / 中未声明任何字段 它有一个带有(仅)一个参数的参数化构造函数 / 该参数用于初始化 Rectangle / 它有一个名为 getSide 的方法来暴露正方形的边长 / 覆盖 toString 方法,使其返回以下形式的字符串: / Square(side) 例如正方形(4)

边的值将被硬编码。矩形的宽度为 4。为了让正方形的边长为 4,我创建了一个矩形实例并调用方法 getWidth 并将其设置为边长。这就是我的想法,但在这种情况下,我只会使用其中一个字段,所以我的问题是如何初始化这两个字段?我可以调用 Rectangle 并使长度和宽度相等,还是有其他方法可以做到?

这是我的 Square 类的代码:

public class Square {

    public Square (int side)
    {
        super(side, side);
    }

    public int getSide ()
    {
        return side;
    }

    @Override
    public String toString ()
    {
        return String.format ("Square (%d)", side);
    }
}

对于 super(side, side) 行,我得到错误构造函数 Object in class Object cannot be applied to given types。不需要任何参数,找到 int, int。对于我的返回语句,我得到它找不到变量端。

【问题讨论】:

  • 闻起来像家庭作业。是吗?
  • Square 中,您应该采用单个参数,即大小,然后您只需在Squares 构造函数中调用super(size, size)...
  • 你应该从一本书或一个教程开始。就像inheritance 上的 Java 教程部分一样@
  • "边的值将被硬编码。"我假设您的意思是这些值被硬编码在 main() 或您创建 RectangleSquare 对象的任何位置。它们绝对应该在其他任何地方硬编码。
  • 是的,这些值将在创建对象的主要方法中进行硬编码。

标签: java inheritance rectangles


【解决方案1】:

边的值将被硬编码。

我假设您的意思是在创建RectangleSquare 对象时(例如在main() 中)对宽度和长度的值进行硬编码。这些值绝对不应RectangleSquare 类中的任何位置进行硬编码。

矩形的宽度为 4。为了使正方形的边长为 4,我创建了一个矩形实例并调用方法 getWidth 并将其设置为边长。

一点也不。相反,Square 应该有自己的构造函数,该构造函数调用 Rectangle 构造函数,widthlength 的值相同:

public Square(int side) {
    super(side, side); // Set the width and length to the same value.
}

【讨论】:

  • 我尝试使用 super 但我将长度和宽度作为参数。我纠正了你的建议,但它说 super 不需要参数。另外,在编写 getSide 方法时,我是否从 getWidth 方法返回宽度?
  • @user3440443 请出示您的 Square 课程的代码,以便我们为您提供帮助。
  • 我添加了 Square 类。
  • 经过我自己的更多研究后,我设法弄清楚了。我不明白我的五个班级中的哪个班级是超班级,也不知道是否有一个。我发现我必须在我的类声明中将我的 Square 类定义为子类。然后我调用 super.getWidth () 来获取我对我方的价值,因为它们将是相同的。我一直无法弄清楚这一点,因为我一直在努力理解我的问题的逻辑,然后是超级命令的语法。在我尝试合并您对语法的建议后,我研究了错误但没有运气。
猜你喜欢
  • 2016-09-01
  • 2012-10-18
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 2019-06-01
  • 1970-01-01
相关资源
最近更新 更多