我无法让这段代码发挥作用。我列出了几个不同的类,它们相互扩展。然而,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;
}
}
答案 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"。