在Java中每创建一个新对象就增加一个对象实例变量



我正在研究一个问题。我必须创建一个Boat级,并且该船有一个序列号,每次制造一个新的object时,该序列号增加1。我的测试通过了createNewSerialNumber()方法,但是当我在Boat对象上测试它时,我不断得到AssertionFailed, expecting <2> but was <1> or <7> but was <6>意味着对象的序列号没有像它应该的那样增加一个的错误。

我已经检查了静态与非静态,并认为我做得正确。我甚至把它和其他类似的问题做了对比,还是一样的。有人能给点建议吗?

private int counter =0;
private static int serialNumber = 0;
public static int createNewSerialNumber()
{
serialNumber++;
return serialNumber;
}
public static int getSerialNumber()
{
return serialNumber;
}
public Boat(String newMake, Color newColor)
{

make = newMake;
color = newColor;
speed = 0;
counter++;
serialNumber = counter;



}

只有static变量应该递增。counter实例变量应该被赋值为增加后的值。

public Boat(String newMake, Color newColor)
{
make = newMake;
color = newColor;
speed = 0;
counter = createNewSerialNumber();  
}

这样,第一个Boat实例将有counter == 1,第二个将有counter == 2,以此类推。

您还应该将createNewSerialNumber方法设置为private,因为serialNumber不应该从这个类外部递增。只有Boat构造函数可以增加它。

相关内容

  • 没有找到相关文章

最新更新