我无法解决此错误。有人可以帮忙吗?我的提示和代码如下。


  写一个封装矩形的超类。矩形具有两个属性,分别表示矩形的宽度和高度。它具有返回矩形的周长和面积的方法。此类有一个子类,封装了一个平行六面体或盒子。平行六面体的底部为矩形,另一属性为长度。它有两种方法可以计算并返回其面积和体积。您还需要包括一个客户端类来测试这两个类。


            public class Rectangle1
        {

        protected double width;
        protected double height;


        public Rectangle1(double width, double height){
        this.width = width;
        this.height = height;


        }

        public double getWidth(){
        return width;
        }

        public void setWidth(double width) {
        this.width = width;

        }
        public double getHeight(){
        return height;

        }

        public void setHeight(double height){
        this.height = height;

        }



        public double getArea(){
        return width * height;
        }

        public double getPerimeter(){
        return 2 * (width + height);

        }
        }

    public class Box extends Rectangle1 {
        protected double length;

        public Box(double length){
            this.length = length;
        }

        public double getLength(){
            return length;
        }

        public void setLength(double length){
            this.length = length;
        }

        public double getVolume(){
            return width * height * length;
        }
    }

    public class TestRectangle {

    public static void main(String[] args) {

    Rectangle1 rectangle = new Rectangle1(2,4);
    Box box = new Box(5);

    System.out.println("\nA rectangle " + rectangle.toString());
    System.out.println("The area is " + rectangle.getArea());
    System.out.println("The perimeter is " +rectangle.getPerimeter());
    System.out.println("The volume is " + box.getVolume());
    }
    }


错误在

public Box(double length){
    this.length = length;
}


Eclipse IDE中的错误消息如下:


  隐式超级构造函数Rectangle1()未定义。必须显式调用另一个构造函数。


当我尝试运行它时,它给了我:


  线程“主” java.lang.Error中的异常:未解决的编译问题:
          隐式超级构造函数Rectangle1()未定义。必须显式调用另一个构造函数


    at Box.<init>(Box.java:4)
    at TestRectangle.main(TestRectangle.java:7)


有人可以建议我如何解决此错误吗?

最佳答案

您的基类Rectangle1具有一个构造函数:

public Rectangle1(double width, double height) {
    this.width = width;
    this.height = height;
}


因为您编写了构造函数,所以默认的no aruments构造函数将不存在,因此super()将找不到正确的构造函数。您应该在super(0, 0)构造函数中编写:Box,它将与Rectangle1构造函数匹配。

10-08 20:15