Super认为它不是声明中的第一个构造函数

时间:2016-03-10 14:57:55

标签: java inheritance extend superclass super

我无法让这段代码发挥作用。我列出了几个不同的类,它们相互扩展。然而,box super的代码往往不认为它是第一个构造函数。

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

/**
 * Constructor for objects of class rectangle
 */
public void 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 Box3 extends Rectangle3
{
// instance variables 
private int height;

/**
 * Constructor for objects of class box
 */
public void 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;
}

}

然后是立方体......

public class Cube3 extends Box3
{
   //instance variable
private int depth;

/**
 * Cube constructor class
 */   
    public void Cube(int l, int w, int h, int d)
   {
   //super call
   super(l, w, h);
   //initialization of instance variable
   depth = d;
}

//return call to depth
public int getDepth()
{
    return depth;
}

}

2 个答案:

答案 0 :(得分:2)

public void Box(int l, int w, int h)

如果您将该行更改为

,我确定您的代码有效
public Box3(int l, int w, int h)

答案 1 :(得分:2)

您的代码没有定义构造函数。 方法 public void Box(int l, int w, int h)不是Box3类的构造函数,因此使用super(..)无效。方法public void Cube(int l, int w, int h, int d)public void Rectangle(int l, int w)

也是如此

相反,您需要在Box3中定义构造函数:

public Box3(int l, int w, int h) {
    // call superclass
    super (l, w);
    // initialise instance variables
    height = h;
}

请注意缺少void以及其名称与班级名称相同的事实。

请注意,上述构造函数不起作用,因为Rectangle3没有此构造函数。因此,对于Rectangle3,您需要使用:

public Rectangle3(int l, int w) {
    // initialise instance variables
    length = l;
    width = w;
}

同样适用于Cube3

public Cube3(int l, int w, int h, int d) {
    //super call
    super(l, w, h);
    //initialization of instance variable
    depth = d;
}

另请参阅Java Tutorial "Providing Constructors for Your Classes"