super认为自己不是第一个构造函数的语句
Super thinks it is not the first constructor in a statement
我似乎无法让这段代码工作。我列出了几个不同的 类,它们相互延伸。然而,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;
}
}
public void Box(int l, int w, int h)
如果您将该行更改为
,我确定您的代码可以正常工作
public Box3(int l, int w, int h)
您的代码没有定义构造函数。 方法 public void Box(int l, int w, int h)
不是Box3
class 的构造函数,因此使用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
并且它的名称与 class 名称相同。
注意上面的构造函数将不起作用,因为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;
}
我似乎无法让这段代码工作。我列出了几个不同的 类,它们相互延伸。然而,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;
}
}
public void Box(int l, int w, int h)
如果您将该行更改为
,我确定您的代码可以正常工作public Box3(int l, int w, int h)
您的代码没有定义构造函数。 方法 public void Box(int l, int w, int h)
不是Box3
class 的构造函数,因此使用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
并且它的名称与 class 名称相同。
注意上面的构造函数将不起作用,因为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;
}