0

我想从 Box 扩展一个 Cube。我的程序有三个部分,首先我做一个矩形类,然后我用它来扩展一个 Box 类,然后我扩展一个 Cube。我被困在立方体部分。这就是我的指示:

评估说明 a. Cube 是长、宽和高都具有相同值的 Box。湾。您不必添加任何额外的实例变量或方法,但您必须设置 Cube 的构造函数以确保长度、宽度和高度都具有相同的值。

长方形:

    public class Rectangle
    {
        // instance variables 
        private int length;
        private int width;

        /**
         * Constructor for objects of class rectangle
         */
        public Rectangle(int l, int w)
        {
            // initialise instance variables
            length = l;
            width = w;
        }

        // return the height
        public int getLength()
        {
            return length;
        }
        public int getWidth()
        {
            return width;
        }

    }

盒子:

public class Box extends Rectangle
{
    // instance variables 
    private int height;

    /**
     * Constructor for objects of class box
     */
    public Box(int l, int w, int h)
    {
        // call superclass
        super(l, w);
        // initialise instance variables
        height = h;
    }

    // return the height
    public int getHeight()
    {
        return height;
    }

}

和主要的一个立方体:

class Cube extends Box{
    // instance variables 
    private int height;
        private int length;
    private int width;

    public Cube(int h,int w,int l){
        super(h,w,l);

    }

    public double getheight(){
        return height;

               }
        public double getlength() {
            return length;
        }

        public double getwidth() {
            return width;
        }
}

我需要知道我是否做对了 Cube 之一。如果我做的不对,请帮我解决它。

4

3 回答 3

5

立方体是所有边相等的盒子。所以将相同的长度参数传递给盒子的所有 3 个维度。

public class Cube extends Box{
    public Cube(int length)
    {
        super(length, length, length);
    }
}
于 2013-03-12T21:18:27.233 回答
0

public class Box extends Cube {

于 2013-03-12T21:15:32.177 回答
0

rgettman 已经有了正确的解决方案,但只是详细说明一下:Cube 扩展自 Box,因此它继承了所有(非私有)方法和所有成员。从技术上讲,它具有所有成员,但“私人”成员不会被孩子看到或修改。除非您想更改其实现的行为,否则您无需重新声明子类中的方法。

如果打算扩展一个类,则通常使用“受保护”类型,因为子类将能够继承变量并对其可见。这取决于子类是否需要直接修改成员变量。

于 2013-03-12T22:15:00.873 回答