-1

我有一个带有 2 个变量的超类 RECTANGLE 和一个带有 1 个变量的子类 SQUARE。我正在使用类 Square 来继承 getArea() 方法并很好地覆盖它。Eclipse 编辑器在我的 SQUARE 类中出现错误,“super(width,length);”。LENGTH 变量有一个错误,可以通过在 RECTANGLE 类中将其设为静态来修复,这不是我想要的。我的作业要求 SQUARE 类有一个带有 1 个变量的构造函数,可以自行相乘。我的代码中的逻辑错误是什么?

public class Rectangle 
{

double width, length;

Rectangle(double width, double length) 
{
    this.width = width;
    this.length = length;
}

double getArea() 
{
    double area = width * length;
    return area;
}   

void show() 
{
    System.out.println("Rectangle's width and length are: " + width + ", " + length);
    System.out.println("Rectangle's area is: " + getArea());
    System.out.println();
}
}


public class Square extends Rectangle
{
double width, length;

Square(double width) 
{
    super(width, length);
    this.width = width;
}

double getArea() 
{
    double area = width * width;
    return area;
}   

void show() 
{
    System.out.println("Square's width is: " + width) ;
    System.out.println("Square's area is: " + getArea());
}
}


public class ShapesAPP 
{

public static void main(String[] args) 
{
    Rectangle shape1 = new Rectangle(5, 2);
    Square shape2 = new Square(5);
    shape1.show( );
    shape2.show( );
}

}
4

2 回答 2

4

你应该有这样的构造函数:

Square(double width) 
{
    super(width, width);
}

此外,您应该消除 Square 类中的以下行:double width, length;

于 2012-05-28T23:18:56.730 回答
1

它应该是:

Square(double width) 
{
    super(width, width);
    //this.width = width;
}

ASquare是一个所有边都等长的矩形。

您收到错误是因为您尝试使用length尚未初始化的。

此外,您不需要有成员widthlengthin Square。您已经在基类中拥有它们。所以一个更好的修订版本是:

public class Square extends Rectangle
{
    Square(double width) 
    {
        super(width, length);
    }

    double getArea() 
    {
        double area = width * width;
        return area;
    }  



    void show() 
    {
        System.out.println("Square's width is: " + width) ;
        System.out.println("Square's area is: " + getArea());
    }

}
于 2012-05-28T23:18:46.547 回答