【发布时间】: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()或您创建Rectangle和Square对象的任何位置。它们绝对应该不在其他任何地方硬编码。 -
是的,这些值将在创建对象的主要方法中进行硬编码。
标签: java inheritance rectangles